python tkinter消息框_Python:Tkinter / ttk主题消息框

在Python的Tkinter GUI开发中,引入ttk模块可以获得更符合操作系统样式的界面元素。然而,tkMessageBox对话框并不支持ttk主题。文章探讨了这个问题,并指出Windows上的Tk消息框是由系统API提供的,而非Tk本身。解决方案涉及到修改Python可执行文件的清单资源以支持主题,从而实现Tkinter消息框的主题化。
摘要由CSDN通过智能技术生成

我开始使用Tkinter制作GUI,我也添加了模块tkMessageBox.但最近我发现导入模块ttk会提供更多“最新”结果:按钮和文本框会显示当前操作系统的实际样式.这是:Windows 10按钮是纯蓝色和蓝色,而不是以前版本的阴影灰色块状按钮.

但不幸的是,我找不到在常用的Dialog Boxes(我从tkMessageBox导入的那些)上使用这个ttk主题小部件的方法.因此,确定/取消对话框(例如)仍然显示不属于Windows 10的主题.

我检查的所有文档都将我带到了Tkinter.

解决方法:

Windows上的Tk消息框是系统提供的消息框. Tk不使用Tk按钮和框架创建消息框,但显示Windows API提供的库存对话框.

为了检查你的报告,我运行了Tcl / Tk 8.6,Python 3.4和Powershell,并让每个人都显示了一个消息框.正如你所看到的那样,Tcl / Tk看起来正如我们所期望的那样,但Python和Powershell都默认为旧式的非主题外观和感觉.

88d356a2e1ea19d83383501125c557bb.png

这样做的原因很可能与启动它的可执行文件中的嵌入式清单有关. Tcl / Tk wish可执行文件包含一个清单资源,表明应用程序支持主题公共控件库. python.exe和pythonw.exe文件没有这样的资源.必要的清单嵌入在tkinter使用的Tk86.dll文件中,但我认为这需要与可执行文件相关联.我通过使用Visual Studio打开pythonw.exe文件并将现有的RT_MANIFEST资源替换为从Tk86.dll中提取的资源来测试此假设.使用合适的清单,Python tkinter消息框正确地为主题:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值