web-dev-qa-db-de.com

button text von tkinter funktioniert nicht in mojave

Es ist ein sehr einfaches Programm.

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

Ich erwarte, dass dieses Programm mir zB ein Bild zeigt.
work well

Aber es zeigt eigentlich ein Bild unten.
not work

Wenn die Größe der GUI geändert wird, scheint es gut zu funktionieren.

In High Sierra ist dieses Problem nicht aufgetreten.

Meine Umgebung ist folgende:

  • macOS Mojave 10.14
  • Python 3.7.0

Könntest du mir einen Rat geben?

Ich habe dasselbe Problem auf hier gefunden.

6
Tiger

Das Ändern des Erscheinungsbilds in den Lichtmodus hat dieses Problem für mich behoben.

Um das Aussehen zu ändern, gehen Sie zu Einstellungen -> Allgemein -> Darstellung -> Lichtmodus.

Dark Mode

Light Mode

7
Pratik Kulkarni

Ich hatte auch dieses Problem, zu 100% reproduzierbar auf meinem Mac, nachdem ich auf Mojave aufgerüstet habe und bei Verwendung von Homebrews Python3.

Durch das Umschalten auf das Python 3.7.1-Paket von Python.org wurde das Problem für mich vollständig beseitigt.

4
Jon Garber

Hier ist ein Beispiel, das das Problem für mich beseitigt (zumindest bis das Python/Tkinter-Zeug bereinigt wird):

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()

Dies wurde unter macOS Version 10.14.2 (18C54) und Python 3.7.2 (über Home-Brew geladen) getestet.

2
Octetta

Ich habe dieses Problem mit einer App, die ich mit PyInstaller geschrieben und eingefroren habe. Es funktioniert immer noch gut auf einem PC und meinem Mac-Laptop, der nicht über Mojave verfügt, aber auf meinem Desktop-Mac, der kürzlich zu Mojave aktualisiert wurde, sind Tasten ohne Text vorhanden, und einige Tasten sind bis zum Klicken nicht vollständig sichtbar. 

Ich habe eine einfache Lösung für Reddit gefunden: Verändere einfach die Fenstergröße und die Oberflächenelemente erscheinen!

Link zu Reddit-Thread

2
Geoffrey Sametz

Die einzige praktikable Lösung, die ich für py2app Tkinter-Fenster in Mojave gefunden habe, war die Aktualisierung meiner Python-Version auf 2.7.15 (64-Bit nicht 64/32-Bit). Vorherige Versionen zeigten leeren Text in den eingefrorenen Binärdateien von py2app. Wenn der Python-Code direkt ausgeführt wird, wird der Code angezeigt. Das Einfügen von .update_idletasks() vor dem Mainloop jedes Fensters hat für mich keinen Unterschied gemacht (getestet auf zwei Mojave-Maschinen). 

0
nateS

Ich hatte genau diesen Fehler, und um ihn zu beheben, musste ich meine Tasten in ttk.Button ändern und einen Stil festlegen. Fügen Sie beispielsweise Folgendes zum Importieren hinzu:

try: from tkinter import ttk # python 3
except: import ttk # python 2.7

Und dann nach dem root init:

    style = ttk.Style()
    style.map("C.TButton",
              foreground=[('pressed', 'red'), ('active', 'blue')],
              background=[('pressed', '!disabled', 'black'),
                          ('active', 'white')]
              )

Wenn Sie dann den Button instanziieren:

self.button = ttk.Button(self, text="my cooool button",
                                 command=self.load_something_cool, style="C.TButton")

Es hat perfekt funktioniert, um sicherzustellen, dass der Text richtig angezeigt wird. Bevor ich das TTK-Bit hinzugefügt habe, war ich in demselben Boot wie Sie in Mojave. 

0
jamescampbell

Ich hatte das gleiche Problem, aber jetzt habe ich es behoben. 

Wenn Sie Anaconda verwenden, geben Sie die folgenden Befehle in das Terminal ein.

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

Ich hatte dieses Problem nur beim Einfrieren mit py2app. Mein Update bestand darin, .update_idletasks () für das Widget zu verwenden, nachdem alle Elemente für jeden Frame oder jedes Toplevel erstellt wurden.

0
jazzaccord

Bei mir hat es geklappt, python von 3.5.4 auf 3.5.6 zu aktualisieren.

0
user4491955

Hatte das gleiche Problem mit Schaltflächentext und Dropdown-Text nach dem Packen meines Programms mit Pyinstaller. Ich denke, es ist ein Tk/Tcl-Fehler. Ich konnte das Problem beheben, indem ich den Vollbildmodus (grüner Knopf in grauer Leiste lol) und dann wieder auf die normale Größe reduzierte (gelber Knopf in grauer Leiste lol).

0

Ich schätze, es gibt einen Fehler in Tk . Ich bin auf MacOS 10.14.3 Wenn Sie das Tkinter-Fenster maximieren und minimieren, wird der Text auf der Schaltfläche angezeigt. Eine andere Lösung, die für mich funktioniert hat, ist 

from tkinter import *
from tkinter import ttk

button1 = tkk.Button(*your args here*)
0
Mayan Bhadage