Как изменить цвет переднего плана или фона кнопки Tkinter на Mac OS X?

Я работал над главами Tkinter в Python и столкнулся с проблемой, когда цвета переднего плана и фона кнопки не будут меняться. Я работаю над системой Mac OS X 10.6 с Python 2.6.1. Цвета ярлыка будут меняться, но не цвета кнопки. Например:

from Tkinter import * Label(None, text='label', fg='green', bg='black').pack() Button(None, text='button', fg='green', bg='black').pack() mainloop() 

В моей системе Mac цвета ярлыка меняются, но цвета кнопки нет. В системе Windows с Python 2.6.1 цвета ярлыка и кнопки меняются.

Кто-нибудь знает, что происходит не так?

Я проверил Interface Builder и, похоже, нет возможности изменить цвет фона или фона в этом инструменте. Существует возможность редактировать цвета переднего плана и фона ярлыка.

Система рендеринга Mac OS X (Quartz?) Может просто не поддерживать (легко) изменение fg и bg кнопки.

5 Solutions collect form web for “Как изменить цвет переднего плана или фона кнопки Tkinter на Mac OS X?”

Я думаю, что ответ заключается в том, что кнопки на mac просто не поддерживают изменение фона и цветов переднего плана. Как вы видели, это не уникально для Tk.

Для всех, кто случается по этому вопросу, как и я, решение заключается в использовании модуля ttk , доступного по умолчанию для OS X 10.7. К сожалению, установка цвета фона по-прежнему не работает из коробки, но цвет текста делает.

Это требует небольшого изменения кода:

Оригинал:

 from Tkinter import * Label(None, text='label', fg='green', bg='black').pack() Button(None, text='button', fg='green', bg='black').pack() mainloop() 

С ttk:

 import tkinter as tk from tkinter import ttk root = tk.Tk() # background="..." doesn't work... ttk.Style().configure('green/black.TLabel', foreground='green', background='black') ttk.Style().configure('green/black.TButton', foreground='green', background='black') label = ttk.Label(root, text='I am a ttk.Label with text!', style='green/black.TLabel') label.pack() button = ttk.Button(root, text='Click Me!', style='green/black.TButton') button.pack() root.mainloop() 

Существует решение для изменения фона кнопок на Mac.

Использование:

 highlightbackground=color 

Например:

 submit = Button(root, text="Generate", highlightbackground='#3E4149') 

Это приводит к следующему: хорошая кнопка, которая соответствует фону:

кнопка

Я смотрел, почему это не работает. Я нашел быстрый способ попытаться исправить это, чтобы иметь метку, а затем привязать клик с меткой. Затем на короткое время измените цвета ярлыков, чтобы имитировать щелчок. Вот пример.

 def buttonPress(*args): searchB.config(state = "active") searchB.update() time.sleep(0.2) searchB.config(state = "normal") ## Whatever command you want searchB = Label(main, text = "Search", bg = "#fecc14", fg = "Black", activebackground = "Red", highlightbackground="Black") searchB.bind("<Button-1>", startSearch) searchB.pack() 

Подтверждение следующего кода может изменить фон кнопки tkinter на Mac OS X.

 self.btn_open = tk.Button(self.toolbar, text = "Open", command=self.open, highlightbackground = "gray") 

Но он не может изменить bg ttk.Button.

Interesting Posts

Копирование данных excel в список python в IPython с помощью буфера обмена?

Django – Правильный способ передать аргументы декораторам CBV?

Как извлечь URL-адрес из строки с помощью python?

fcntl.flock – как реализовать тайм-аут?

Секундомер в Python

«Не удалось построить колесо для psycopg2» – MacOSX, используя virtualenv и pip

Непривилегированный ICMP-питон

Python: принудительно использовать heapq.merge для строк интерперта как целые числа во время сравнения

Python, Selenium, загружать все типы MIME

Взаимодействие с всплывающими окнами с использованием селена в питоне

Django cursor.execute (QUERY) намного медленнее, чем запуск запроса в базе данных postgres

Как включить связанные поля модели с помощью Django Rest Framework?

Статистическая модель предложения предложений, например проверка орфографии

Есть ли способ проверить, содержат ли два объекта одинаковые значения в каждой из своих переменных в python?

как отсортировать массив 2d по строке в python?

Python - лучший язык программирования в мире.