Записи упаковки Tkinter в другой столбец, чем кнопка - PullRequest
0 голосов
/ 26 марта 2020

Я использую простой код:

frame_bottom = Frame(root)
frame_bottom.pack(fill='x')

button1 = Button(frame_bottom, text = 'One', command =  visualize)
button2 = Button(frame_bottom, text = 'Two', state = DISABLED)
label_rango1 = Label(frame_bottom, text = 'Sigma value:')
e_sigma = Entry(root, borderwidth = 2)

label_rango1.pack(side='left',  expand=True)
e_sigma.pack(side='left')
button1.pack(side='left',  expand=True)
button2.pack(side='left', expand=True)  

Howerer, несмотря на использование side='left', запись находится под остальными кнопками. Любая идея о том, как упаковать все в одну линию?

Спасибо!

1 Ответ

1 голос
/ 26 марта 2020

Причина в том, что button1 и button2 являются детьми frame_bottom, а e_sigma - детьми root. Вы упаковываете frame_bottom до e_sigma и не предоставляете никаких опций, поэтому frame_bottom добавляется в top окна root (ну, в верхней части доступного пространства, что имеет значение если вы уже упаковали другие виджеты в окне root). Когда вы упаковываете e_sigma, оно должно go в оставшееся пространство, которое по определению ниже frame_bottom.

Другими словами, frame_bottom и e_sigma оба являются потомками root. frame_bottom упакован первым, а e_sigma упакован вторым, оба с параметрами по умолчанию. Следовательно, frame_bottom появится выше e_sigma.

Если вы хотите, чтобы запись находилась справа от кнопок, она должна иметь тот же родительский элемент, что и кнопки.

...