Как изменить цвет переднего плана или фона кнопки 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 кнопки.

  • Python / Tkinter: Включить / выключить обновления экрана, такие как wxPython Freeze / Thaw?
  • Не могу понять, как связать ключ ввода с функцией в tkinter
  • Виджет Python Tkinter для ноутбуков
  • Проблема с запуском python / matplotlib в фоновом режиме после завершения сеанса ssh
  • Как удалить объект create_text в холсте?
  • задайте текст записи с помощью кнопки tkinter
  • Вложение окна Pygame в рамку Tkinter или WxPython
  • Python 3.2 tkinter создает рамку результатов для вывода вывода
  • 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
    Python - лучший язык программирования в мире.