Tkinter виджеты в рамке - PullRequest
       1

Tkinter виджеты в рамке

0 голосов
/ 23 января 2020

У меня есть LabelFrame, у которого columnspan равно 3. Я бы хотел, чтобы 2 Checkbutton виджетов в кадре были с обеих сторон. Как я могу сетку виджетов соответственно?

Я пытался сделать sticky='e' и sticky='w', но он не делает то, что я хочу.

frame = tk.LabelFrame(window, text='Tools', font=('Helvetica', 15), fg='white',
                                        bg='#022340')
frame.grid(row=3, column=0, sticky='ew', columnspan=3)

button1 = tk.Checkbutton(frame, text='Button1', font=('Helvetica', 15, 'bold'),bg='red')
button2 = tk.Checkbutton(frame, text='Button2', font=('Helvetica', 15, 'bold'),bg='yellow')

button1.grid(row=0, column=1, sticky='w')
button2.grid(row=0, column=0, sticky='e')

Это то, что я ищу: Format that I want

1 Ответ

1 голос
/ 23 января 2020

Я поместил виджет Label с некоторой шириной и без текста in between на две кнопки-флажки и дал ему тот же фон, что и у окна root.

Я использовал grid_rowconfigure() и grid_columnconfigure() для window и frame, чтобы сделать GUI отзывчивым.

Я добавил виджет Label в в нижней части GUI, чтобы вы могли иметь представление о том, как добавить виджеты под ним, если в вашем приложении больше двух виджетов с кнопками.

import tkinter as tk

window = tk.Tk()

frame = tk.LabelFrame(window, text='Tools', font=('Helvetica', 15), fg='white', bg='#022340')
frame.grid(row=0, column=0, sticky='nsew')

window.grid_rowconfigure(0, weight=1)
window.grid_columnconfigure(0, weight=1)

frame.grid_rowconfigure((0,1), weight=1)
frame.grid_columnconfigure((1), weight=1)

button1 = tk.Checkbutton(frame, text='Button1', font=('Helvetica', 15, 'bold'), bg='red')
button2 = tk.Checkbutton(frame, text='Button2', font=('Helvetica', 15, 'bold'), bg='yellow')

# the label widget between the two checkbuttons
label_m = tk.Label(frame, width=30, bg='#022340')
label_m.grid(row=0, column=1)

# Add some padding to separate them apart
button1.grid(row=0, column=2, sticky='nsew')
button2.grid(row=0, column=0, sticky='nsew')

# a label widget to show how all widgets are placed in GUI
label = tk.Label(frame, text='A Label Widget', bg='white')
label.grid(row=1, sticky='nswe', columnspan=3)

window.mainloop()

Снимки экрана

g1

g2

g3

Надеюсь, это поможет!

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