tkinter 笔记本小部件框架限制
tkinter notebook widget frame limitation
我试图在一个选项卡中设置两个不同的框架,但是当我在互联网上的某处阅读时
笔记本小部件不可能。
我在放置按钮时遇到问题 - 例如 10 个按钮下方有 8 个按钮。
下面的按钮较小,并且在 x 轴上方的每个按钮之间有空 space....
我不想跨越它们..我想要它们大小相同并将它们粘在中间。我用了网格..
我想使用不同的框架来做到这一点,然后每一行按钮都与另一行分开......
但是笔记本小部件不可能,我说得对吗?
而且我认为使用 .place( x=, y= )
它很烦人并且需要时间...
有什么建议可以简单地做到这一点吗?
import tkinter
import tkinter.ttk
window = tkinter.Tk()
nb = tkinter.ttk.Notebook(window)
nb.grid(row=0, column=0, columnspan=10, rowspan=10)
frame = tkinter.Frame(nb)
frame.grid(row=0, column=0)
nb.add(frame, text = "Tab1")
button1 = tkinter.Button(frame, text="button1")
button2 = tkinter.Button(frame, text="button2")
button3 = tkinter.Button(frame, text="button3")
button4 = tkinter.Button(frame, text="button4")
button5 = tkinter.Button(frame, text="button5")
button6 = tkinter.Button(frame, text="button6")
button7 = tkinter.Button(frame, text="button7")
button8 = tkinter.Button(frame, text="button8")
button1.grid(row=0, column=0)
button2.grid(row=0, column=1)
button3.grid(row=0, column=2)
button4.grid(row=1, column=0)
button5.grid(row=1, column=1)
button6.grid(row=1, column=2)
button7.grid(row=1, column=3)
button8.grid(row=1, column=4)
window.mainloop()
在此示例中,按钮大小相同,但在我的代码中,rows=1 处的按钮大小不同,因为我将它们附加到 png 照片上..
当然可以在笔记本中放置多个框架。您必须使它们成为初始框架的子对象:
frame = tkinter.Frame(nb)
nb.add(frame, text = "Tab1")
frame1 = tkinter.Frame(frame)
frame1.pack(fill="both", expand="True")
frame2 = tkinter.Frame(frame)
frame2.pack(fill="both", expand="True")
然后您可以将按钮放在子框架内:
button1 = tkinter.Button(frame1, text="button1")
button2 = tkinter.Button(frame1, text="button2")
button3 = tkinter.Button(frame1, text="button3")
button4 = tkinter.Button(frame2, text="button4")
button5 = tkinter.Button(frame2, text="button5")
button6 = tkinter.Button(frame2, text="button6")
button7 = tkinter.Button(frame2, text="button7")
button8 = tkinter.Button(frame2, text="button8")
最后,您将不得不 fiddle 将按钮放置在它们自己的子框架中,因为您希望它们具有:
button1.grid(row=0, column=0)
button2.grid(row=0, column=1)
button3.grid(row=0, column=2)
button4.grid(row=1, column=0)
button5.grid(row=1, column=1)
button6.grid(row=1, column=2)
button7.grid(row=1, column=3)
button8.grid(row=1, column=4)
例如,这会使按钮居中。在子框架中,您也可以尝试使用其他几何管理器,如果它似乎更符合您的需要。
我试图在一个选项卡中设置两个不同的框架,但是当我在互联网上的某处阅读时 笔记本小部件不可能。
我在放置按钮时遇到问题 - 例如 10 个按钮下方有 8 个按钮。 下面的按钮较小,并且在 x 轴上方的每个按钮之间有空 space.... 我不想跨越它们..我想要它们大小相同并将它们粘在中间。我用了网格..
我想使用不同的框架来做到这一点,然后每一行按钮都与另一行分开......
但是笔记本小部件不可能,我说得对吗?
而且我认为使用 .place( x=, y= )
它很烦人并且需要时间...
有什么建议可以简单地做到这一点吗?
import tkinter
import tkinter.ttk
window = tkinter.Tk()
nb = tkinter.ttk.Notebook(window)
nb.grid(row=0, column=0, columnspan=10, rowspan=10)
frame = tkinter.Frame(nb)
frame.grid(row=0, column=0)
nb.add(frame, text = "Tab1")
button1 = tkinter.Button(frame, text="button1")
button2 = tkinter.Button(frame, text="button2")
button3 = tkinter.Button(frame, text="button3")
button4 = tkinter.Button(frame, text="button4")
button5 = tkinter.Button(frame, text="button5")
button6 = tkinter.Button(frame, text="button6")
button7 = tkinter.Button(frame, text="button7")
button8 = tkinter.Button(frame, text="button8")
button1.grid(row=0, column=0)
button2.grid(row=0, column=1)
button3.grid(row=0, column=2)
button4.grid(row=1, column=0)
button5.grid(row=1, column=1)
button6.grid(row=1, column=2)
button7.grid(row=1, column=3)
button8.grid(row=1, column=4)
window.mainloop()
在此示例中,按钮大小相同,但在我的代码中,rows=1 处的按钮大小不同,因为我将它们附加到 png 照片上..
当然可以在笔记本中放置多个框架。您必须使它们成为初始框架的子对象:
frame = tkinter.Frame(nb)
nb.add(frame, text = "Tab1")
frame1 = tkinter.Frame(frame)
frame1.pack(fill="both", expand="True")
frame2 = tkinter.Frame(frame)
frame2.pack(fill="both", expand="True")
然后您可以将按钮放在子框架内:
button1 = tkinter.Button(frame1, text="button1")
button2 = tkinter.Button(frame1, text="button2")
button3 = tkinter.Button(frame1, text="button3")
button4 = tkinter.Button(frame2, text="button4")
button5 = tkinter.Button(frame2, text="button5")
button6 = tkinter.Button(frame2, text="button6")
button7 = tkinter.Button(frame2, text="button7")
button8 = tkinter.Button(frame2, text="button8")
最后,您将不得不 fiddle 将按钮放置在它们自己的子框架中,因为您希望它们具有:
button1.grid(row=0, column=0)
button2.grid(row=0, column=1)
button3.grid(row=0, column=2)
button4.grid(row=1, column=0)
button5.grid(row=1, column=1)
button6.grid(row=1, column=2)
button7.grid(row=1, column=3)
button8.grid(row=1, column=4)
例如,这会使按钮居中。在子框架中,您也可以尝试使用其他几何管理器,如果它似乎更符合您的需要。