【问题标题】:Updating to ActiveTcl 8.5.17 unexpected behaviour更新到 ActiveTcl 8.5.17 意外行为
【发布时间】:2015-05-11 05:50:28
【问题描述】:

今天我从 ActiveTcl 8.5.9 更新到 ActiveTcl 8.5.17 以修复这个 bug。我在Mac上,os x 10.7。我注意到在我的程序中破坏了一些东西。当我单击不相关的区域时,某些按钮会闪烁黑色轮廓(更新前没有发生这种情况)。最大的担忧是我的一些检查按钮没有显示!例如:

import tkinter as tk
t=tk.Tk()

c=tk.IntVar()
b=tk.Checkbutton(master=t,variable=c)
b.grid(column=0,row=1,sticky="nsew")

t.mainloop()

给出一个空窗口 但是代码:

import tkinter as tk

t=tk.Tk()

c=tk.IntVar()
b=tk.Checkbutton(master=t,variable=c,text="bob")
b.grid(column=0,row=1,sticky="nsew")

t.mainloop()

编辑:Checkbutton 仍然存在,因为它对点击做出反应,但它只是不显示

给出预期的结果。现在到了奇怪的部分,将文本更改为“aaa”代码不再起作用。这与文本的长度有关吗?我试过添加填充,改变粘性并没有任何帮助:(在其他情况下它的行为甚至更奇怪。在 8.5.17 中有什么变化还是我的版本只是关闭了?

【问题讨论】:

  • 你能用 ttk 小部件试试同样的方法吗?它们更原生。文档docs.python.org/3.5/library/…
  • 使用 ttk 就可以了。我只是看不出它不应该在 tk 中工作的原因

标签: python macos python-3.x tkinter


【解决方案1】:

使用 ttk 小部件实现更多跨平台一致性。

import tkinter as tk
import tkinter.ttk  as ttk

tkk 是一组比 tk 中呈现的更现代的小部件。

我猜 tk 会为 GUI 调用 olds OS API,然后自定义这些小部件。 ttk 调用最后一个用于 GUI 的原生默认 API。 这会导致 OS X 出现问题,因为 Apple 在发布新版操作系统时认为向后兼容性不是优先事项

【讨论】:

    猜你喜欢
    • 2021-06-27
    • 2019-05-10
    • 2020-02-01
    • 1970-01-01
    • 2022-07-02
    • 1970-01-01
    • 2023-02-02
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多