web-dev-qa-db-ja.com

tkinterのボタンテキストがmojaveで機能しない

非常にシンプルなプログラムです。

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

このプログラムは、下の写真のように私に見せることを期待しています。
work well

しかし、実際には下の写真を示しています。
not work

GUIでサイズを変更すると、うまく機能しているようです。

High Sierraではこの問題は発生しませんでした。

私の環境は次のとおりです。

  • macOS Mojave 10.14
  • Python 3.7.0

アドバイスをいただけますか?

here で同じ問題が見つかりました。

14
Tiger

外観をライトモードに変更すると、この問題が修正されました。

外観を変更するには、設定->一般->外観->ライトモードに移動します。

Dark Mode

Light Mode

7
Pratik Kulkarni

また、Mojaveにアップグレードした後、Homebrewのpython3を使用したときに、Macで100%再現可能なこの問題が発生しました。

Python.orgのPython 3.7.1パッケージのダウンロードに切り替えると、問題はまったくなくなりました。

5
Jon Garber

Tkにバグがあると思います。私はMacOS 10.14.3を使用していますtkinterウィンドウを最大化および最小化すると、ボタン上のテキストが表示されます、私のために働いた別の解決策は

from tkinter import *
from tkinter import ttk

button1 = ttk.Button(*your args here*)
5
Mayan Bhadage

(少なくとも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経由でロード))でテストされました。

2
Octetta

私が書いたアプリでこの問題があり、PyInstallerでフリーズしました。 Mojaveを搭載していないPCおよびMacラップトップでは引き続き正常に動作しますが、最近MojaveにアップデートしたデスクトップMacではテキストのないボタンがあり、一部のボタンはクリックするまで完全に見えません。

Redditで簡単な解決策を見つけました。ウィンドウのサイズを少し変更するだけで、インターフェイス要素が表示されます。

Redditスレッドへのリンク

2
Geoffrey Sametz

これとまったく同じエラーが発生しました。修正するには、ボタンを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であなたと同じボートにいました。

1
jamescampbell

Mojaveのpy2app Tkinterウィンドウで見つかった唯一の実行可能な修正は、python versionを2.7.15(64/32ビットではなく64ビット)に更新することでした。これより前のバージョンはすべてpy2appに空のテキストを表示しました凍結されたバイナリ。python正常に表示されたコードを直接実行します。各ウィンドウのメインループの前に.update_idletasks()を挿入しても違いはありません(2台のMojaveマシンでテスト済み) 。

0
nateS

私は同じ問題を抱えていましたが、今では修正しました。

Anacondaを使用している場合は、ターミナルで次のコマンドを入力してください。

  1. conda update python
  2. conda update anaconda
0
Vaibhav Holani

この問題は、py2appを使用してフリーズした場合にのみ発生しました。私の修正は、各フレームまたはトップレベルのすべての要素が作成された後、ウィジェットで.update_idletasks()を使用することでした。

0
jazzaccord

私にとっては、pythonを3.5.4から3.5.6に更新するのに役立ちました。

0
user4491955

Pyinstallerでプログラムをパッケージ化した後、ボタンテキストとドロップダウンテキストで同じ問題が発生しました。 Tk/Tclのバグだと思います。全画面を入力して(グレーのバーにある緑色のボタンlol)、それから通常のサイズに再び最小化することで(グレーのバーにある黄色のボタンlol)修正できました。

0