2017-01-18 3 views
1

От this Я нашел, как изменить размер кнопки, поэтому я попытался выполнить этот код.Tkinter button resize

from tkinter import * 
selection_window = Tk() 
selection_window.wm_title("") 
selection_window.geometry('{}x{}'.format(200, 150)) 
frame_1 = Frame(selection_window, width=200, height=30) 
Button(frame_1, text="Single",height = 100).pack(side=LEFT,anchor=S) 
Button(frame_1,text="Range",command=Toplevel,height = 20).pack(side=RIGHT,anchor=S) 
frame_1.pack() 
selection_window.mainloop() 

Но размер кнопки не изменился, а кнопки переместились в центр окна. Может кто-нибудь, пожалуйста, скажите мне, почему проблема?

screenshot

+0

КСТАТИ: проще '.geometry ("200x150")' – furas

+3

Это проблема, связанная ОС, я использую Linux и ваши кнопки имеют разные высоты для меня. Я думаю, что тема tk по умолчанию для OSX не поддерживает ключевое слово height. –

+2

@ j_4321 верен: тема OSX очень строгая относительно его кнопок. –

ответ

1

Кнопка Высота: Если вы заметили, высота frame_1 составляет 30, а высота кнопок 100 и 20. Одна высота кнопки значительно выше, чем frame_1. Поэтому, если вы максимизируете свое окно tk, вы увидите разницу в высоте кнопок. В качестве альтернативы попробуйте установить высоту одной кнопки на 10, а другую на 2 и повторите сценарий, чтобы увидеть разницу в высоте. Вывод: высота кнопок может быть изменена.

Кнопка Боковой Размещение: Боковое расположение кнопок можно управлять с помощью padx = [x_left, x_right] вариант системы упаковки. x_left и x_right обозначает горизонтальное внешнее дополнение, которое должно быть оставлено с каждой стороны кнопки в отношениях с его родителем. Вы можете прочитать Tk documentation для более четкого объяснения алгоритма Packer.

from tkinter import * 
selection_window = Tk() 
selection_window.wm_title("") 
selection_window.geometry('{}x{}'.format(200, 150)) 
frame_1 = Frame(selection_window, width=200, height=30) 
frame_1.pack() 
Button(frame_1, text="Single",height = 10).pack(side=LEFT, anchor=S, padx=[0,40]) 
Button(frame_1,text="Range",command=Toplevel,height = 2).pack(side=RIGHT, anchor=S, padx=[20,0]) 
selection_window.mainloop() 

Высота:HeightРазмещения:Placement

Часть 2: Per комментариев ниже, пожалуйста, запустите скрипт ниже, чтобы увидеть, если изменение высоты ttk.Button возможно даже для OSX, используя темы «не по умолчанию» и опубликуйте свое заключение в разделе комментариев. Он работал над моим Ubuntu.

from tkinter import * 
import tkinter.ttk as ttk 
s=ttk.Style() 
print('Style themes on my system are ', s.theme_names()) 
s.theme_use('clam') 
s.configure('bb.TButton', background='white', padding=50) 
b1=ttk.Button(text='Default') 
b1.pack(side=LEFT, anchor=S, padx=[0,40]) 
b2=ttk.Button(text='Custom', style='bb.TButton') 
b2.pack(side=RIGHT, anchor=S, padx=[20,0]) 

обивка = 1padding=1 набивка = 40padding=40

+0

Спасибо! Я думаю, @ j_4321 ответил на вопрос. Я попытался изменить значение высоты и ширины (я даже использовал цикл для установки высоты в диапазоне (20)), и ничего не изменилось. – pkqxdd

+0

@pkqxdd Спасибо, что сообщили, что параметры высоты и ширины в пакете не повлияли на OSX. Я узнал что-то новое. Могу ли я узнать, внесли ли параметр padx какие-либо изменения в боковое размещение кнопки? Поведение, описанное выше, является тем, что я наблюдал для системы Ubuntu 16.04. –

+0

@pkqxdd Ваша проблема возникла для tk.Button. Согласно j_4321, проблема связана с темой default tk. В этом случае вы могли бы увидеть, будет ли работать с вами другая тема? Чтобы проверить это, вы должны использовать ttk.Button с другой настраиваемой темой. См. Раздел 47 и 48 статьи http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-themes.html. Я искал, если изменить стиль ttk.Button, но не смог найти вариант для изменения высоты, вот и все. –

Смежные вопросы