Python / Tk,您可以重新排序小部件的子级吗?

时间:2019-03-07 18:45:58

标签: python tk

我将一堆小部件打包到一个框架中,然后在按下按钮时动态创建更多小部件。然后将这些压缩到左侧,并在现有小部件旁边结束。

我宁愿将这些小部件打包在此框架中现有小部件的中间(它们全部在一行上)。有没有办法通过将它们重新排列为包装它们的框架的子框架来做到这一点?

宁愿不使用网格而不是pack。我可以获取它们的列表作为它们框架的子对象,并且宁愿继续使用.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())

0 个答案:

没有答案