非常にシンプルなプログラムです。
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パッケージのダウンロードに切り替えると、問題はまったくなくなりました。
Tkにバグがあると思います。私はMacOS 10.14.3を使用していますtkinterウィンドウを最大化および最小化すると、ボタン上のテキストが表示されます、私のために働いた別の解決策は
from tkinter import *
from tkinter import ttk
button1 = ttk.Button(*your args here*)
(少なくとも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経由でロード))でテストされました。
私が書いたアプリでこの問題があり、PyInstallerでフリーズしました。 Mojaveを搭載していないPCおよびMacラップトップでは引き続き正常に動作しますが、最近MojaveにアップデートしたデスクトップMacではテキストのないボタンがあり、一部のボタンはクリックするまで完全に見えません。
Redditで簡単な解決策を見つけました。ウィンドウのサイズを少し変更するだけで、インターフェイス要素が表示されます。
これとまったく同じエラーが発生しました。修正するには、ボタンをttk.Button
に変更してスタイルを設定する必要がありました。たとえば、インポートするには次を追加します。
try: from tkinter import ttk # python 3
except: import ttk # python 2.7
そして、ルートの初期化後:
style = ttk.Style()
style.map("C.TButton",
foreground=[('pressed', 'red'), ('active', 'blue')],
background=[('pressed', '!disabled', 'black'),
('active', 'white')]
)
次に、ボタンをインスタンス化するとき:
self.button = ttk.Button(self, text="my cooool button",
command=self.load_something_cool, style="C.TButton")
テキストが適切に表示されるようにするために完全に機能しました。 ttkビットを追加する前は、Mojaveであなたと同じボートにいました。
Mojaveのpy2app Tkinterウィンドウで見つかった唯一の実行可能な修正は、python versionを2.7.15(64/32ビットではなく64ビット)に更新することでした。これより前のバージョンはすべてpy2appに空のテキストを表示しました凍結されたバイナリ。python正常に表示されたコードを直接実行します。各ウィンドウのメインループの前に.update_idletasks()
を挿入しても違いはありません(2台のMojaveマシンでテスト済み) 。
私は同じ問題を抱えていましたが、今では修正しました。
Anacondaを使用している場合は、ターミナルで次のコマンドを入力してください。
conda update python
conda update anaconda
この問題は、py2appを使用してフリーズした場合にのみ発生しました。私の修正は、各フレームまたはトップレベルのすべての要素が作成された後、ウィジェットで.update_idletasks()を使用することでした。
私にとっては、pythonを3.5.4から3.5.6に更新するのに役立ちました。
Pyinstallerでプログラムをパッケージ化した後、ボタンテキストとドロップダウンテキストで同じ問題が発生しました。 Tk/Tclのバグだと思います。全画面を入力して(グレーのバーにある緑色のボタンlol)、それから通常のサイズに再び最小化することで(グレーのバーにある黄色のボタンlol)修正できました。