最后,我想使用组合框中的值作为其他函数中的参数,但我想如果我现在就可以打印它们,那就足够了。这是我目前掌握的情况。你知道吗
import tkinter as tk
from tkinter import ttk
import time
def ok():
betType = betTypeVar.get()
season = seasonVar.get()
print(betType, season)
def CreateSimPreviousSeasonWindow():
prevSeasonWindow = tk.Tk()
#============= Bet Type Input =============#
betTypeVar = tk.StringVar()
betTypeLabel = tk.Label(prevSeasonWindow, text="Bet type:").grid(row=0,column=0)
betTypeChosen = ttk.Combobox(prevSeasonWindow, values=['Moneyline','Total'])
betTypeChosen.grid(row=0, column=1)
seasonVar = tk.StringVar()
seasonLabel = tk.Label(prevSeasonWindow, text='Season:').grid(row=1, column=0)
seasonChosen = ttk.Combobox(prevSeasonWindow, values=['2018', '2017'])
seasonChosen.grid(row=1,column=1)
button = tk.Button(prevSeasonWindow, text='OK', command=ok)
button.grid(row=2,column=0)
prevSeasonWindow.mainloop()
这让我
File "C:[directory...]", line 6, in ok
betType = betTypeVar.get()
NameError: name 'betTypeVar' is not defined
在我看来,这个错误很明显是因为ok()没有任何参数传递给它,所以它不知道“betTypeVar”是什么,但是我读过的所有教程都是这样做的,所以我遗漏了一些东西。如果我真的尝试传递ok()参数,它仍然不起作用。你知道吗
在代码中有两件事需要修正。首先让我们关注
CreateSimPreviousSeasonWindow
:您定义了两个
StringVar
,但实际上从未使用它或将它们链接到combobox
对象。正确的方法是将它们设置为textvaraible
:接下来,
NameError: name 'betTypeVar' is not defined
是因为变量是局部变量。您正在尝试跨不同函数访问同一变量。要传递它们,需要声明global
:我还想指出,如果您只想检索combobox的值,那么实际上不需要创建两个
StringVar
。只是combobox.get()
已经足够好用了。你知道吗相关问题 更多 >
编程相关推荐