Ответ 1
Изменение внешнего вида на светлый режим устранило эту проблему для меня.
Чтобы изменить внешний вид, перейдите в "Настройки" → "Общие" → "Внешний вид" → "Легкий режим".
Это очень простая программа.
import tkinter
tkinter.Button(None, text='button').pack()
tkinter.mainloop()
Я ожидаю, что эта программа покажет мне, как показано ниже.
Но на самом деле это показывает картину ниже.
Когда он изменяется в графическом интерфейсе, он работает хорошо.
Эта проблема не возникала в Хай-Сьерре.
Моя среда:
Не могли бы вы мне посоветовать?
Я узнал такую же проблему на здесь.
Изменение внешнего вида на светлый режим устранило эту проблему для меня.
Чтобы изменить внешний вид, перейдите в "Настройки" → "Общие" → "Внешний вид" → "Легкий режим".
У меня также была эта проблема, 100% воспроизводимая на моем Mac после обновления до Mojave и при использовании Homebrew python3.
Переход на 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. Он по-прежнему отлично работает на ПК и моем ноутбуке Mac, у которого нет Mojave, но на моем рабочем столе Mac, который недавно обновился до Mojave, у него есть кнопки без текста, а некоторые кнопки полностью невидимы, пока не нажмут.
Я нашел легкое решение для Reddit: просто слегка измените размер окна, и появятся элементы интерфейса!
У меня была точно такая же ошибка, и чтобы исправить ее, мне пришлось изменить кнопки на 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. Мое исправление заключалось в использовании.update_idletasks() в виджетах, поскольку все элементы создаются для каждого кадра или верхнего уровня.
Имел ту же проблему с текстом кнопки и выпадающим текстом после упаковки моей программы с помощью Pyinstaller. Я думаю, что это ошибка Tk/Tcl. Я смог зафиксировать его, введя полный экран (зеленая кнопка в сером полоске), а затем снова уменьшив до нормального размера (желтая кнопка в сером цвете).
У меня была такая же точная проблема. У меня был темный режим в моих системных предпочтениях. Как только я вернулся к "нормальному" внешнему виду, текст для моих кнопок появился хорошо. В настоящее время у вас нет исправления проблемы, кроме, к сожалению, не использующего темный режим.
Единственное жизнеспособное исправление, которое я нашел для окон pykapp Tkinter в Мохаве, состояло в том, чтобы обновить мою версию python до 2.7.15 (64-битная, а не 64/32-битная). Версии до этого все отображали пустой текст в замороженных двоичных файлах py2app. Непосредственно запущенный код Python отображается нормально. Вставка .update_idletasks()
перед mainloop каждого окна не имела для меня никакого значения (протестировано на двух машинах Mojave).
У меня была такая же проблема, но теперь я исправил ее.
Если вы используете Anaconda, введите следующие команды в терминале, и вы должны быть готовы пойти:
conda update python
conda update anaconda
У меня получилось обновить python до 3.5.6 с 3.5.4.