#python #tkinter
#python #tkinter
Вопрос:
У меня возникла небольшая проблема при создании моего графического интерфейса. При смене фона я могу изменить весь фон, а также фон надписей и тому подобное, Но когда дело доходит до кнопок и полей ввода и т.д., За кнопкой есть белая область, которую я, похоже, не могу изменить : 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)
Возможно, есть простое решение, но бесчисленные поиски в Google и часы чтения документации и сообщений на форумах ни к чему меня не привели: (Надеюсь, вы сможете помочь…
И да, я использую Mac OS X с Python 2.6
Комментарии:
1. Я предполагаю, что вы используете Mac? Под Linux (Python2.7, Tkinter 81008) я получаю прямоугольную черную кнопку с белой рамкой. Когда я наведу на него курсор мыши (активирую его), он становится серым.
2. @Mark — Да, я на Mac, но на самом деле не вижу, как наведение курсора мыши (активация) решит мою проблему, поскольку это согласуется с запуском приложения. Спасибо за ввод, хотя 🙂
Ответ №1:
Я знаю, что прошло некоторое время, и вы, конечно, больше не работаете над этим кодом, но я нашел решение, и я опубликую его здесь для всех, у кого есть подобная проблема. Это то же самое, что и способ, которым вы получаете область вокруг записи в качестве цвета фона:
highlightbackground=color
Комментарии:
1. Откопал мой старый код и проверил, чтобы я мог одобрить ваш ответ, и да, ваше решение сработало 🙂 Хотя немного поздно (и исправьте, что я больше не работаю над этим), это, возможно, поможет другим в том же положении, что и я. Спасибо! 🙂
Ответ №2:
На macintosh вы мало что можете сделать с цветом фона встроенных кнопок. Такова цена, которую мы платим за встроенные кнопки. На других платформах и для других виджетов то, что вы видите, вероятно, является «фоном выделения», который можно изменить с помощью highlightbackground
и highlightthickness
атрибутов виджета. Это область, используемая виджетом для обозначения фокуса.
Комментарии:
1. помогло бы использовать другого создателя графического интерфейса вместо Tkinter, или на самом деле возможно изменить дизайн самой кнопки?
Ответ №3:
Похоже, это зависит от платформы и, возможно, от темы в этом. Я предполагаю, что вы используете Mac, судя по тому, как кнопка выглядит на вашем снимке экрана. Кажется, что текст кнопки нарисован внутри растрового изображения, которое обеспечивает округлый контур кнопки. Возможно, Tkinter не в состоянии это контролировать.
В Windows с классической темой фон кнопки черный, но есть серый контур из-за рельефа, который поднимается. Когда я устанавливаю для него значение relief = FLAT, он становится полностью черным.
Было бы полезно, если бы включенный вами образец был доступен для прямого запуска. Мне пришлось добавить определение для textColor, закомментировать command=CMD.send_mail и добавить root.mainloop() в конце. Я также добавил textColor = WHITE в настройку кнопки.
Попробуйте поиграть с опцией рельефа или измените тему вашей системы, чтобы посмотреть, сможете ли вы повлиять на способ рисования кнопки.
Комментарии:
1. Попытался немного поиграть с опцией relief, но не могу заставить это решить мою проблему: (