【问题标题】:Python 2.7 - ttk module seemingly not working in Windows 8.1Python 2.7 - ttk 模块似乎无法在 Windows 8.1 中运行
【发布时间】:2015-06-23 18:57:56
【问题描述】:

我的应用程序的 GUI 是基于 Tkinter 的,它非常实用。我一直在尝试使用 ttk 让它看起来更现代。我在 Windows 8.1 中使用 Python 2.7。导入ttk 没有错误,并且在脚本中包含ttk 的编码运行没有错误。但是,生成的界面看起来与仅使用Tkinter 完成的界面几乎相同。对于按钮尤其如此。我尝试了不同的ttk styles,它们看起来几乎相同或比仅基于 Tkinter 的界面更差。

我系统中的 Tkversion 是 8.5。我一直在使用作为 Python 2.7 本身一部分的 ttk。我尝试从https://pypi.python.org/pypi/pyttk 安装pyttk-0.3.2,但即使经过多次尝试,它的安装也总是失败。

我的问题是:

  • 是否存在Python 2.7的模块ttk在Windows 8.1下无法正常运行的已知问题?
  • ttk 库中是否存在错误的可能性,即使它在导入或使用 ttk 运行代码期间不会导致错误?
  • 我真的需要安装 pyttk-0.3.2 吗?

另外,您能否推荐一个使用 Tkinter 和 ttk 在 Python 2.7 中编码的软件(希望是最小的 - 意味着不需要安装太多外部库)?这将有助于我作为在我的计算机中测试 ttk 的参考点。

提前致谢!

更新了代码和屏幕截图:(回应@Bryan Oakley)

这是我使用的代码:

from Tkinter import *
import ttk

root = Tk()
root.geometry("")
root.title("classic")

button_1 = Button(root, text='Tkinter')
button_1.grid(row=0, column=0, padx=10, pady=10)

button_2 = ttk.Button(root, text='ttk')
button_2.grid(row=0, column=1, padx=10, pady=10)

style = ttk.Style()
style.theme_use('classic')

root.mainloop()

提供七种 ttk 主题样式:'winnative'、'clam'、'alt'、'default'、'classic'、'vista'、'xpnative'

这是每种类型的屏幕截图(4 月 20 日更新):

【问题讨论】:

  • 您能否附上一个屏幕截图,显示您的 ttk 和 tkinter 小部件的外观以及您用来生成它的代码(例如:并排放置一个 tkinter 按钮和 ttk 按钮)?很难判断您的 ttk 小部件是否看起来不正确,或者它们是否与 tkinter 小部件天生非常相似。
  • @BryanOakley,我使用了全局 ttk 样式。到目前为止,我还没有尝试自定义单个小部件。
  • @BryanOakley,我已经用代码和屏幕截图更新了我的问题。
  • 好吧,这揭示了一些新的亮点。你肯定看起来有问题,但我不知道是什么。至少在 Windows 7 上,ttk 按钮看起来好多了。
  • 您是否尝试过在不设置样式的情况下使用 ttk(即:使用默认而不声明您正在使用默认)?您是否尝试过使用“vista”主题?

标签: python python-2.7 user-interface tkinter ttk


【解决方案1】:

您的问题没有提及,但您还应该有一个可用的“vista”主题。尝试使用该主题。您也可以尝试设置主题,并依赖默认设置(我认为应该是“vista”)。

解决您的具体问题:

是否存在 Python 2.7 的模块 ttk 在 Windows 8.1 下无法正常运行的已知问题?

我不知道。

即使在导入或使用 ttk 运行代码期间不会导致错误,但 ttk 库中是否存在错误的可能性?

这不太可能,但显然有可能。

我真的需要安装 pyttk-0.3.2 吗?

不,你没有。

【讨论】:

  • 感谢您的评论。如果我没记错的话,你在stackoverflow的其他地方提倡Tkinter没有死,在那个论点中,你说接口可以使用ttk有效地现代化。如果这是真的,为什么 ttk 在 Windows 中让我失望了?这是否意味着需要广泛的自定义 ttk 样式而不是可用的默认 ttk 主题?如youtube.com/… 所示,我很高兴能使用它,但它对我不起作用。那是因为 ttk 在 Python 3.x 中得到了很大的改进吗?
  • @JeeYem:我不知道。没有看到你所看到的,我无法知道是否有问题。可能是最新版本的 tkinter 使用与 ttk 相同的本机小部件。换句话说,我不知道 tkinter 看起来比它应该的更好,因此没有可见的差异,或者 ttk 看起来比它应该的更差,因此没有可见的差异。
猜你喜欢
  • 1970-01-01
  • 2016-04-17
  • 2015-10-27
  • 2012-11-12
  • 2020-07-02
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多