Python / Tk, вы можете изменить порядок дочерних элементов виджета? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть куча виджетов, упакованных в рамку, и затем я динамически создаю больше виджетов при нажатии кнопки. Затем они упаковываются влево и оказываются рядом с существующими виджетами.

Я бы предпочел упаковать эти виджеты в середину существующих виджетов в этом фрейме (они все в одной строке). Есть ли способ сделать это, переупорядочив их как дочерние элементы кадра, в который они были упакованы?

Не хотел бы использовать здесь сетку вместо пакета. Я могу получить их список в качестве дочерних элементов своего фрейма, и я предпочел бы продолжать использовать .winfo_children () для манипулирования ими, а не добавлять их в какой-то другой список и использовать это. В основном я хочу взять button3, button4 и button5 и переместить их вверх в порядке наложения, чтобы они отображались между label14 и label15.

Должен ли я упаковывать все виджеты после label14 до того, как я создам эти три кнопки, упакую эти три кнопки, а затем упакую остальные? Или я могу как-то переупорядочить дочерний стек?

Спасибо !!

.!window.!frame.!label
.!window.!frame.!optionmenu
.!window.!frame.!button
.!window.!frame.!label2
.!window.!frame.!label3
.!window.!frame.!label4
.!window.!frame.!label5
.!window.!frame.!button2
.!window.!frame.!label6
.!window.!frame.!button3
.!window.!frame.!button4
.!window.!frame.!button5
[<tkinter.Frame object .!window.!frame>, <tkinter.Frame object .!window.!frame2>, <tkinter.Frame object .!window.!frame3>]




for i in range(0, self.site_column_count):
    start = (i * column_break)
    end =  (i + 1) * column_break
    this = self.site_list[start:end]
    header = str(self.site_list[start]) + "-" + str(self.site_list[end - 1])
    self.receiver.set(" Sites ")
    # option menu column 1
    new_dropdown = "self.site_picker_" + str(i)
    new_dropdown = tk.OptionMenu(main_GUI.windows[0].window_nav_frame, self.receiver, *this, command = lambda _: self.show_site_info())
    new_dropdown.pack(side = tk.LEFT, fill = tk.Y)
    new_dropdown.configure(highlightthickness = 0)
    format_item(new_dropdown, **themes[1])

print(main_GUI.windows[0].winfo_children())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...