Python: фон виджета Tkinter (кнопки, записи и т. Д.) - PullRequest
5 голосов
/ 14 апреля 2011

У меня небольшая проблема при создании моего графического интерфейса.При смене фона я могу изменить весь фон, а также фон надписей и тому подобное, но когда дело доходит до кнопок, полей ввода и т. Д., Позади кнопки есть белая область, которую я не могу изменить: S

Проблема может быть видна на картинке ниже.

(Не хватает репутации, чтобы опубликовать фотографию, поэтому свяжу ее) http://www.thesite.dk/upload/media/tkinter.png

С кодом:

from Tkinter import *

background = "BLACK"
textColor = "WHITE"
root = Tk()
root.configure(bg=background)

Email = Label(root, text="Enter E-mail Address :", font=("Lucida Grande", 12), fg=textColor, background=background)
Email.grid(row=6, column=0, sticky=NW, padx=19)

EmailField = Entry(root, width=30)
EmailField.grid(row=6, column=0, columnspan=3, sticky=NW, padx=159)

EmailButton = Button(root, text="Mail It !", background=background)
EmailButton.grid(row=6, column=0, columnspan=6, sticky=NW, padx=389)

SM_Status = StringVar()
EmailStatus = Label(root, textvariable=SM_Status, font=("Lucida Grande", 12), fg=textColor, background=background)
EmailStatus.grid(row=6, column=2, sticky=NW, padx=20)

Возможно, есть простое решение, но бесчисленные гугли и часы чтения документации и сообщений на форуме ни к чему не привели :( Надеюсь, вы сможете помочь ...

И даЯ использую Mac OS X с Python 2.6

Ответы [ 3 ]

10 голосов
/ 03 декабря 2012

Я знаю, что это было давно, и вы, конечно, больше не работаете над этим кодом, но я нашел решение, и я опубликую его здесь для всех, у кого есть подобная проблема. Это то же самое, что и цвет фона вокруг области вокруг записи:

highlightbackground=color

2 голосов
/ 14 апреля 2011

В Macintosh вы мало что можете сделать с цветом фона нативных кнопок. Такова цена, которую мы платим за родные кнопки. На других платформах и для других виджетов, вероятно, вы видите «выделенный фон», который можно изменить с помощью атрибутов highlightbackground и highlightthickness виджета. Это область, используемая виджетом для обозначения фокуса.

1 голос
/ 14 апреля 2011

Кажется, это зависит от платформы и, возможно, зависит от темы. Я предполагаю, что вы находитесь на Mac по тому, как кнопка выглядит на вашем снимке экрана. Кажется, что текст кнопки нарисован внутри растрового изображения, которое обеспечивает закругленный контур кнопки. Возможно, Tkinter не сможет это контролировать.

В Windows с классической темой фон кнопки черный, но из-за рельефа рельеф имеет серый контур. Когда я установил его на рельеф = FLAT, он полностью черный.

Было бы полезно, если бы ваш включенный образец был непосредственно запущен. Мне пришлось добавить определение textColor, закомментировать command = CMD.send_mail и добавить root.mainloop () в конце. Я также добавил textColor = WHITE в настройку кнопки.

Попробуйте поиграть с опцией рельефа или измените тему вашей системы, чтобы увидеть, можете ли вы повлиять на способ рисования кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...