Избавляемся от лишнего пространства с помощью tkinter - PullRequest
0 голосов
/ 01 июля 2019

Я делаю меню ресторана с tkinter, чтобы практиковаться в летнее время.Ниже названия ресторана много пробелов, от которых я хотел бы избавиться, чтобы моя программа выглядела менее рассеянной.Это код, который у меня есть в настоящее время.

root = Tk()
root.geometry("1450x1050+0+0")
root.title("Flamin' Damon's")
root.configure(background='#000000')

Tops = Frame (root, width = 1450, height = 100, bd = 12, relief = "raise")
Tops.pack(side=TOP)
lblTitle = Label(Tops, font=('arial', 75, 'bold'), background='#e88215', text= "\tFlamin' Damon's\t\t\t")
lblTitle.grid(row =0, column=0)
BottomMainFrame = Frame (root,background='#000000', width = 1350, height = 650, bd = 12, relief = "raise")
BottomMainFrame.pack(side=BOTTOM)

F1 = Frame (BottomMainFrame, background='#e88215', width = 450, height = 650, bd = 12, relief = "raise")
F1.pack(side=LEFT)

F2 = Frame (BottomMainFrame,  background='#e88215', width = 450, height = 650, bd = 12, relief = "raise")
F2.pack(side=LEFT)
F2Top = Frame (F2,  background='#e88215', width = 450, height = 350, bd = 4, relief = "raise")
F2Top.pack(side=TOP)
F2Bottom = Frame (F2, width = 450, height = 300, background='#e88215', bd = 4, relief = "raise")
F2Bottom.pack(side=BOTTOM)

F3 = Frame (BottomMainFrame,background='#e88215', width = 450, height = 650, bd = 12, relief = "raise")
F3.pack(side=RIGHT)

Я подумал, что, возможно, добавление (sticky = "NSEW") к lblTitle.grid решит проблему, так как я нашел похожий вопрос здесь, но получил тот жерезультат.Белая маркировка - это та область, о которой я говорю.Область одинакова на полном экране и сведена к минимуму.

lblTitle.grid(row =0, column=0,sticky = "NSEW")

Showing the area I wanna cut down

Теперь я не пытаюсь полностью удалить область, но, возможно, удалено от 50% до 75%.Может ли это быть размеры моего корня и рамок?Я тоже играл с ними.Любая помощь будет оценена.

Ответы [ 3 ]

0 голосов
/ 01 июля 2019

Вам нужно изменить корневую геометрию на 850

или высота всех нижних рам до 950

0 голосов
/ 09 июля 2019

Чтобы убрать пробел между Tops и BottomMainFrame, вам нужно использовать BottomMainFrame и заполнить все дополнительное пространство. Вы можете сделать это с помощью fill (придерживайтесь всех краев выделенного пространства) и expand (потребляйте любое дополнительное пространство, не выделенное).

BottomMainFrame.pack(side=BOTTOM, fill="both", expand=True)

Если вы хотите, чтобы три вертикальные области использовали 1/3 горизонтального пространства и всего вертикального пространства, вы также можете использовать те же параметры:

F1.pack(side=LEFT, fill="both", expand=True)
F2.pack(side=LEFT, fill="both", expand=True)
F3.pack(side=RIGHT, fill="both", expand=True)

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

0 голосов
/ 01 июля 2019

Ваш корень имеет высоту 1050, верхняя рамка имеет высоту 100, а нижняя 650. Это оставляет высоту 300 пустым черным пространством (возможно, немного меньше из-за границ).

Самый простой способ решить эту проблему - уменьшить высоту корня или увеличить высоту одного или нескольких кадров, чтобы оставить меньший зазор - рассчитайте его так, чтобы они сложились правильно.

Еще один вариант - добавить распорную рамку, задать ей высоту, равную разнице, которую вы хотите создать, и затем упаковать ее в нижнюю часть, прежде чем упаковать ButtomFrame таким образом, чтобы он поднял BottomFrame вверх.

...