这是一个非常简单的程序。
import tkinter
tkinter.Button(None, text='button').pack()
tkinter.mainloop()
我希望这个节目能让我看到如下图。
但它实际上显示了下面的图片。
当它在GUI上调整大小时似乎运行良好。
在High Sierra没有出现这个问题。
我的环境如下:
你能告诉我一下吗?
我在here上发现了同样的问题。
我也有这个问题,升级到Mojave后和使用Homebrew的python3时,我的Mac上100%可重现。
切换到Python.org的Python 3.7.1包下载完全消除了我的问题。
我有同样的错误,为了解决这个问题,我不得不将我的按钮更改为ttk.Button
并设置样式。例如,添加以下内容以导入:
try: from tkinter import ttk # python 3
except: import ttk # python 2.7
然后在root init之后:
style = ttk.Style()
style.map("C.TButton",
foreground=[('pressed', 'red'), ('active', 'blue')],
background=[('pressed', '!disabled', 'black'),
('active', 'white')]
)
然后,当您实例化Button时:
self.button = ttk.Button(self, text="my cooool button",
command=self.load_something_cool, style="C.TButton")
它完美地确保文本正确显示。在我添加ttk位之前,我和你在莫哈韦的同一艘船。
对我来说,它从3.5.4更新python到3.5.6。
我想Tk中有一个错误。我在MacOS 10.14.3上如果你最大化和最小化tkinter窗口按钮上的文字出现,另一个对我有用的解决方案是
from tkinter import *
from tkinter import ttk
button1 = ttk.Button(*your args here*)
我用我编写的应用程序和PyInstaller冻结了这个问题。它仍然适用于没有Mojave的PC和我的Mac笔记本电脑,但在最近更新为Mojave的桌面Mac上,它有没有文字的按钮,有些按钮在点击之前完全不可见。
我在Reddit上找到了一个简单的解决方案:只需稍微调整窗口大小,就会出现界面元素!
这是一个为我修补问题的例子(至少在Python / Tkinter清理之前):
import tkinter
root = tkinter.Tk()
tkinter.Button(root, text='button').pack()
def fix():
a = root.winfo_geometry().split('+')[0]
b = a.split('x')
w = int(b[0])
h = int(b[1])
root.geometry('%dx%d' % (w+1,h+1))
root.update()
root.after(0, fix)
tkinter.mainloop()
这是在macOS版本10.14.2(18C54)和Python 3.7.2(通过Home-brew加载)上测试的。
我只有在使用py2app冻结时才遇到这个问题。我的修复是在为每个框架或Toplevel创建所有元素之后在窗口小部件上使用.update_idletasks()。
在使用Pyinstaller打包程序后,按钮文本和下拉文本出现了同样的问题。我认为这是一个Tk / Tcl错误。我能够通过进入全屏(灰色条中的绿色按钮lol)然后再次最小化到正常尺寸(灰色条中的黄色按钮lol)来修复它。
我在Mojave中找到的py2app Tkinter窗口唯一可行的修复方法是将我的python版本更新为2.7.15(64位不是64 / 32bit)。之前的版本都在py2app冻结的二进制文件中显示空文本。直接运行python代码显示正常。在每个窗口的主循环之前插入.update_idletasks()
对我没有任何影响(在两台Mojave机器上测试)。
我有同样的问题,但现在我已经解决了。
如果您使用的是Anaconda,请在终端中键入以下命令,您应该很高兴:
conda update python
conda update anaconda