首页 > 解决方案 > 请在 tkinter 按钮中提供帮助

问题描述

在我附在底部的代码中,我希望我创建的 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')

top_frame = win.frame()
bottom_frame = win.frame()
vari=StringVar()

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')])

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()

标签: pythontkinter

解决方案


您可以创建一个新函数来检查字符串是的还是非空的,因为非空字符串具有 Falsy 值。

...
def enale_disabled(*args):
    if vari.get():
        button1.config(state='normal')
    else:
        button1.config(state='disabled')

drop=OptionMenu(win,vari,'','WORD DOCUMENT','PDF DOCUMENT',command=enale_disabled)
...

在上面的代码中,我添加了一个额外''的内容,OptionMenu以更好地演示如何启用或禁用按钮。

在函数中,使用隐式布尔值来检查字符串是否为空。然后相应地更改按钮的状态。


推荐阅读