python - 请在 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()
解决方案
您可以创建一个新函数来检查字符串是空的还是非空的,因为非空字符串具有 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
以更好地演示如何启用或禁用按钮。
在函数中,使用隐式布尔值来检查字符串是否为空。然后相应地更改按钮的状态。
推荐阅读
- c# - 如何获取 html 输入按钮以正确显示 resource.resx 键/值条目?
- java - 显式类型转换,派生类数组
- parsing - 有没有办法在 python 中解析一个 .txt 文件,让用户给出一个词来解析?
- python - 如何从熊猫数据框列中删除字符串值?
- sql - pandas read_sql 将 NULL 导入为 0
- r - 为什么在 ggplot2 中运行相同的注释函数对其他人有用但对我抛出错误(审美长度)?
- netsuite - 在 NetSuite 保存的搜索中提取子字符串
- php - 今年每月的查询计数 - Laravel 5.8
- sql-server - 将 XML 元素转换为 T-SQL 中的属性
- python - 在 Django 中,为什么反向函数将元组作为参数传递?