簡體   English   中英

tkinter的按鈕文本在莫哈韋沙漠中不起作用

[英]Button text of tkinter does not work in mojave

這是一個非常簡單的程序。

import tkinter
tkinter.Button(None, text='button').pack()
tkinter.mainloop()

我希望這個節目能讓我看到如下圖。
工作得很好

但它實際上顯示了下面的圖片。
不行

當它在GUI上調整大小時似乎運行良好。

在High Sierra沒有出現這個問題。

我的環境如下:

  • macOS Mojave 10.14
  • Python 3.7.0

你能告訴我一下嗎?

我在這里發現了同樣的問題。

將外觀更改為Light Mode可以解決此問題。

要更改外觀,請轉到設置 - >常規 - >外觀 - >燈光模式。

暗模式

燈光模式

我也有這個問題,在升級到Mojave和使用Homebrew的python3后,我的Mac上100%可重現。

切換到Python.org的Python 3.7.1包下載完全消除了我的問題。

我想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上找到了一個簡單的解決方案:只需稍微調整窗口大小,就會出現界面元素!

鏈接到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加載)上測試的。

我有同樣的錯誤,為了解決它我必須將我的按鈕更改為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位之前,我和你在莫哈韋的同一艘船。

我只有在使用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,請在終端中鍵入以下命令,您應該很高興:

  1. conda update python
  2. conda update anaconda

對我來說,它從3.5.4更新python到3.5.6。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM