【发布时间】:2020-10-18 14:07:47
【问题描述】:
我正在制作这个 PDF 工具,我希望在成功导入一个或多个文件之前禁用按钮。这是应用在发布时的样子:
我希望按钮的颜色变成栗色而不是原来的灰色。只有将鼠标悬停在它们上方时,它们才会变回栗色。关于如何解决这个问题的任何想法?这是导入按钮的回调:
def import_callback():
no_files_selected = False
global files
files = []
try:
ocr_button['state'] = DISABLED
merge_button['state'] = DISABLED
status_label.pack_forget()
frame.pack_forget()
files = filedialog.askopenfilenames()
for f in files:
name, extension = os.path.splitext(f)
if extension != '.pdf':
raise
if not files:
no_files_selected = True
raise
if frame.winfo_children():
for label in frame.winfo_children():
label.destroy()
make_import_file_labels(files)
frame.pack()
ocr_button['state'] = ACTIVE
merge_button['state'] = ACTIVE
except:
if no_files_selected:
status_label.config(text='No files selected.', fg='blue')
else:
status_label.config(text='Error: One or more files is not a PDF.', fg='red')
status_label.pack(expand='yes')
import_button = Button(root, text='Import Files', width=scaled(20), bg='#5D1725', bd=0, fg='white', relief='groove',
command=import_callback)
import_button.pack(pady=scaled(50))
【问题讨论】:
-
你有没有试过在设置配置后调用类似“self.update()”的东西,self是你的框架?
-
@1966bc 在极少数情况下调用
update而不是使用update_idletasks。无论如何,这不会有什么不同,因为没有实现目标的方法。 -
@1966bc 我在根目录和每个按钮上尝试了更新方法,但不确定它的作用或用途。我使用的唯一框架是您在第二张图片中的合并按钮下看到的文件名标签。合并和 ocr 按钮以及其他所有内容都打包到根目录中。
标签: python-3.x tkinter