ttkbootstrap FontDialog组件点击确定与取消按钮返回结果一致问题求助
ttkbootstrap FontDialog组件点击确定与取消按钮返回结果一致问题求助
嗨,我注意到你在使用ttkbootstrap的FontDialog组件时遇到了个棘手的问题——不管用户点击对话框的确定还是取消按钮,FontDialog.result属性都会返回一个字体对象,导致你没法根据用户的实际交互来判断是否要更新标签字体对吧?
你当前的代码逻辑是打开对话框后直接检查fd.result,但这里的问题在于,result属性并不会因为用户点击取消就变成空值,而是始终会携带一个默认或当前的字体对象。要解决这个问题,其实我们可以利用FontDialog.show()方法的返回值来判断用户的操作:
你的原代码:
from tkinter import * import ttkbootstrap as tb from ttkbootstrap.dialogs.dialogs import FontDialog # my function that opens the font dialog window and sets the test_label font according to chosen parameters def open_font_dialog_window(): fd = FontDialog() fd.show() if fd.result: test_label.config(font=fd.result) # main window window = tb.Window(themename='superhero') window.title('Image Watermark') window.geometry('1500x800') # label with random text for testing of FontDialog test_label = Label(window, text='Sample Text') test_label.pack(pady=20) window.mainloop()
你只需要稍微调整一下函数逻辑,先获取show()方法的返回值(它会返回用户点击的按钮标识,比如'OK'或'Cancel'),再决定是否使用fd.result:
修改后的函数:
def open_font_dialog_window(): fd = FontDialog() # 获取用户点击的按钮结果 user_choice = fd.show() # 只有当用户点击OK时才更新字体 if user_choice == 'OK': test_label.config(font=fd.result)
这样修改后,只有用户明确点击确定按钮时,才会用选择的字体更新标签;如果点击取消,就不会执行任何更新操作,完美区分两种交互场景啦!
备注:内容来源于stack exchange,提问作者OriSh312
相关产品推荐
相关产品推荐

