You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:23:00