tkinter使用求助:选中OptionMenu选项后将button1改为正常状态
实现逻辑
你需要监听下拉菜单绑定的字符串变量的取值变化,当变量值为合法选项时自动切换按钮状态,具体修改如下:
完整可运行代码
from tkinter import * from tkinter import filedialog as fd from tkinter import messagebox as md from tkinter import ttk from pyttsx3 import * from PyPDF2 import * import os win = Tk() win.geometry('500x500') win.title('AudioBook') # 原代码frame写法错误,已修正 top_frame = Frame(win) bottom_frame = Frame(win) vari=StringVar() # 设置初始值为空,确保默认没有选中项 vari.set('') def select_file(): global file if vari.get() == 'WORD DOCUMENT': file=fd.askopenfilename(initialdir='/',filetypes=[('Word FILE','*.docx')]) elif vari.get()== 'PDF DOCUMENT': file=fd.askopenfilename(initialdir='/',filetypes=[('PDF FILE','*.pdf')]) # 新增状态检查函数:判断下拉选项是否选中,切换按钮状态 def check_option(*args): if vari.get(): button1.config(state=NORMAL) else: button1.config(state=DISABLED) # 绑定变量变化监听:当vari的值被修改时自动触发check_option vari.trace('w', check_option) drop=OptionMenu(win,vari,'WORD DOCUMENT','PDF DOCUMENT') button1=Button(win,text='Select File',command=select_file,state=DISABLED) drop.pack(pady=10) button1.pack(pady=10) win.mainloop()
核心改动说明
- 给
StringVar变量vari设置初始空值,保证程序启动时没有默认选中下拉选项 - 新增
check_option回调函数,每次vari值变化时判断是否选中了合法选项,同步修改按钮的state属性 - 用
vari.trace('w', check_option)绑定变量写操作监听,只要用户选择下拉选项就会自动触发状态检查
内容的提问来源于stack exchange,提问作者Kushagra Pandey
相关产品推荐
相关产品推荐

