【问题标题】:User input into a variable to be used in a later function用户输入变量以在以后的函数中使用
【发布时间】:2019-03-07 04:47:45
【问题描述】:

我想制作一个程序,允许用户选择股票代码和其他输入,然后获取实时数据,这些数据会立即返回程序并显示股票信息和其他内容。

然后用户应该能够选择股票以及开始和结束日期,并查看这些日期的一些基本股票信息。该代码本身可以工作,但我一直在努力使用 GUI 为 stock 程序提供输入。

from tkinter import *
#import tkinter
from tkinter import ttk
import random
import random
import datetime as dt
import matplotlib.pyplot as plt
from matplotlib import style
import pandas as pd
import pandas_datareader.data as web
from optparse import OptionParser

compname = 'Company Name'
tckersymbl = 'Ticker Symbol'
strtdte = 'Start Date (y, m, d)'
numbday = 'Number of Days'


#fields = 'Company Name', 'Ticker Symbol', 'Start Date (y, m, d)', 'Number of Days'

def fetch(entries):
   for entry in entries:
      field = entry[0]
      text  = entry[1].get()
      companyname = entry[0]
      print('%s: "%s"' % (field, text))


def makeform(root, tckersymbl):
   entries = []
   for field in compname:
      companyname = entry[0]
      row = Frame(root)
      lab = Label(row, width=15, text=field, anchor='w')
      ent = Entry(row)
      row.pack(side=TOP, fill=X, padx=5, pady=5)
      lab.pack(side=LEFT)
      ent.pack(side=RIGHT, expand=YES)
      entries.append((field, ent))
   return entries

def fetch1(entries):
   for entry in entries:
      field1 = entry[2]
      text1  = entry[3].get()
      ticker = entry[2]
      print('%s: "%s"' % (field1, text1)) 

def makeform1(root, tckersymbl):
   entries = []
   for field1 in tckersymbl:
      ticker = entry[2]
      row = Frame(root)
      lab = Label(row, width=15, text=field1, anchor='w')
      ent = Entry(row)
      row.pack(side=TOP, fill=X, padx=5, pady=5)
      lab.pack(side=LEFT)
      ent.pack(side=RIGHT, expand=YES)
      entries.append((field1, ent))
   return entries

def fetch2(entries):
   for entry in entries:
      field2 = entry[4]
      text2  = entry[5].get()
      startday = entry[4]
      startday1 = startday.int()
      print('%s: "%s"' % (field2, text2)) 

def makeform2(root, strtdte):
   entries = []
   for field2 in strtdte:
      startday = entry[4]
      startday1 = startday.int()
      row = Frame(root)
      lab = Label(row, width=15, text=field2, anchor='w')
      ent = Entry(row)
      row.pack(side=TOP, fill=X, padx=5, pady=5)
      lab.pack(side=LEFT)
      ent.pack(side=RIGHT, expand=YES)
      entries.append((field2, ent))
   return entries

def fetch3(entries):
   for entry in entries:
      field3 = entry[6]
      text3  = entry[7].get()
      numbdays = entry[6]
      print('%s: "%s"' % (field3, text3)) 

def makeform3(root, numbday):
   entries = []
   for field3 in numbday:
      numbdays = entry[6]
      row = Frame(root)
      lab = Label(row, width=15, text=field3, anchor='w')
      ent = Entry(row)
      row.pack(side=TOP, fill=X, padx=5, pady=5)
      lab.pack(side=LEFT)
      ent.pack(side=RIGHT, expand=YES)
      entries.append((field3, ent))
   return entries

#companyname = entry[0]
#ticker = entry[2]
#startday = entry[4]
#startday1 = startday.int()
#numbdays = entry[6]

print(companyname)
style.use('ggplot')

start = dt.datetime(startday1)
end = dt.datetime.now()

df = web.DataReader(ticker, 'iex', start, end)
df.reset_index(inplace=True)

print(df.head(numbdays)) #change value to change number of days you get. default is five


if __name__ == '__main__':
   root = Tk()
   root.geometry("350x175")
   ents = makeform(root, compname, tckersymbl, strtdte, numbday)
   root.bind('<Return>', (lambda event, e=ents: fetch(e)))   
   b1 = Button(root, text='Show',
          command=(lambda e=ents: fetch(e)))
   b1.pack(side=LEFT, padx=5, pady=5)
   b2 = Button(root, text='Quit', command=root.quit)
   b2.pack(side=LEFT, padx=5, pady=5)

   root.mainloop()





#compname = 'Company Name'
#tckersymbl = 'Ticker Symbol'
#strtdte = 'Start Date (y, m, d)'
#numbday = 'Number of Days'

【问题讨论】:

    标签: python pandas tkinter


    【解决方案1】:
    my_variable = input('enter your name: ') # Ari
    print(my_variable)
    >>> 'Ari'
    
    my_variable = input('enter a number: ') # 10
    print(my_variable)
    >>> '10'
    
    # Getting an actual integer, not as a string
    my_variable = int(input('enter a number: ')) # 10
    print(my_variable)
    >>> 10
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多