Python 3.x t根据其他输入更改选项菜单
我有两个选择菜单,一天和一个月。我想让它,如果选择的月份是“二月”或“2”,那么天将只显示为28,即{1…28}Python 3.x t根据其他输入更改选项菜单,python-3.x,tkinter,Python 3.x,Tkinter,我有两个选择菜单,一天和一个月。我想让它,如果选择的月份是“二月”或“2”,那么天将只显示为28,即{1…28} dayVar = StringVar(top) day = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31} dayMenu = OptionMenu(top, dayVar, *day) Label(t
dayVar = StringVar(top)
day = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}
dayMenu = OptionMenu(top, dayVar, *day)
Label(top, text="Day").grid(row = 0, column = 0)
dayMenu.grid(row = 1, column = 0)
#month
monthVar = IntVar(top)
month = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
monthMenu = OptionMenu(top, monthVar, *month)
Label(top, text="Month").grid(row = 0, column = 1)
monthMenu.grid(row = 1, column = 1)
可能有点过火了,但希望你能理解:
import tkinter as tk
from tkinter import ttk
class App(tk.Frame):
def __init__(self, master):
self.master = master
tk.Frame.__init__(self, self.master)
self.days_in_month = {
'January': 31,
'February': 28,
'March': 31,
'April': 30,
'May': 31,
'June': 30,
'July': 31,
'August': 31,
'September': 30,
'October': 31,
'November': 30,
'December': 31
}
self.configure_gui()
self.create_widgets()
def configure_gui(self):
self.master.title("Days in Month")
def populate_days(self, event):
self.days_menu.set('')
# populate the days menu
self.days_menu['values'] = [
i + 1 for i in range(self.days_in_month[self.months_menu.get()])
]
def create_widgets(self):
# set up months label
self.months_label = ttk.Label(self.master, text="Months:")
self.months_label.grid(row=0, column=0, padx=(12, 6), pady=(12, 0))
#set up months menu
self.months_menu = ttk.Combobox(self.master, state='readonly')
self.months_menu['values'] = list(self.days_in_month.keys())
self.months_menu.bind('<<ComboboxSelected>>', self.populate_days)
self.months_menu.grid(row=1, column=0, padx=(12, 6), pady=(6, 12))
# set up days label
self.days_label = ttk.Label(self.master, text="Days:")
self.days_label.grid(row=0, column=1, padx=(6, 12), pady=(12, 0))
# set up days menu
self.days_menu = ttk.Combobox(self.master, state='readonly')
self.days_menu['values'] = []
self.days_menu.grid(row=1, column=1, padx=(6, 12), pady=(6, 12))
if __name__ == "__main__":
root = tk.Tk()
app = App(root)
root.mainloop()
将tkinter作为tk导入
从tkinter导入ttk
类应用程序(tk.Frame):
定义初始(自我,主):
self.master=master
tk.Frame.\uuuuu初始化(self,self.master)
self.days\u in\u month={
"一月":三十一号,,
二月二十八号,,
三月三十一日,
四月三十号,,
五月三十一日,
六月三十号,,
七月三十一日,
八月三十一日,
九月三十号,,
十月三十一日,
11月30日,
十二月三十一日
}
self.configure_gui()
self.create_widgets()
def配置图形用户界面(自):
self.master.title(“月天数”)
def填充天数(自身、事件):
self.days\u菜单集(“”)
#填充“天”菜单
self.days_菜单['values']=[
i+1表示范围内的i(self.days\u in\u month[self.months\u menu.get()])
]
def创建_小部件(自):
#设置月份标签
self.months\u label=ttk.label(self.master,text=“months:)
self.months_label.grid(行=0,列=0,padx=(12,6),pady=(12,0))
#设置月份菜单
self.months\u menu=ttk.Combobox(self.master,state='readonly')
self.months\u菜单['values']=列表(self.days\u in\u month.keys())
self.months\u menu.bind(“”,self.populate\u days)
self.months\u menu.grid(行=1,列=0,padx=(12,6),pady=(6,12))
#设置天数标签
self.days\u label=ttk.label(self.master,text=“days:)
self.days_label.grid(行=0,列=1,padx=(6,12),pady=(12,0))
#设置天数菜单
self.days\u menu=ttk.Combobox(self.master,state='readonly')
self.days_菜单['values']=[]
self.days_menu.grid(行=1,列=1,padx=(6,12),pady=(6,12))
如果名称=“\uuuuu main\uuuuuuuu”:
root=tk.tk()
app=app(根目录)
root.mainloop()