В вашем коде есть две вещи, которые нужно исправить.Сначала давайте сосредоточимся на CreateSimPreviousSeasonWindow
:
betTypeVar = tk.StringVar()
seasonVar = tk.StringVar()
Вы определили два StringVar
, но на самом деле вы никогда не использовали их и не связывали их с вашим combobox
объектом.Правильный способ - установить их как textvaraible
:
betTypeChosen = ttk.Combobox(prevSeasonWindow, textvariable=betTypeVar, values=['Moneyline','Total'])
seasonChosen = ttk.Combobox(prevSeasonWindow, textvariable=seasonVar, values=['2018', '2017'])
Далее, NameError: name 'betTypeVar' is not defined
связано с тем, что ваши переменные являются локальными переменными.Вы пытаетесь получить доступ к одной и той же переменной в разных функциях.Чтобы передать их, вам нужно объявить global
:
def ok():
global betTypeVar, seasonVar
betType = betTypeVar.get()
season = seasonVar.get()
print(betType, season)
def CreateSimPreviousSeasonWindow():
global betTypeVar, seasonVar
...
Также я хочу отметить, что если вы просто хотите получить значения в выпадающем списке, вам не нужно создавать дваStringVar
.Просто combobox.get()
уже работает достаточно хорошо.
import tkinter as tk
from tkinter import ttk
import time
def ok():
global betTypeChosen, seasonChosen
print (betTypeChosen.get(), seasonChosen.get())
def CreateSimPreviousSeasonWindow():
global betTypeChosen,seasonChosen
prevSeasonWindow = tk.Tk()
#============= Bet Type Input =============#
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)
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()
CreateSimPreviousSeasonWindow()