1

我试图在一个选项卡中设置两个不同的框架,但是当我在互联网上的某个地方阅读时,笔记本小部件是不可能的。

我在放置按钮时遇到问题 - 例如 8 个按钮低于 10 个按钮。下面的按钮更小,并且在 x 轴上方的每个按钮之间都有空白空间....我不想跨越它们..我希望它们具有相同的大小并将它们粘在中间。我用网格..

我想使用不同的框架来做到这一点,然后每行按钮彼此分开......但是笔记本小部件不可能,对吗?而且我认为使用.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 照片..

4

1 回答 1

1

当然可以在笔记本中放置多个框架。您必须使它们成为初始帧的子对象:

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")

最后,您将不得不摆弄以将按钮放置在您希望它们拥有的自己的子框架中:

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)

例如,这使按钮居中。在子框架内,您还可以尝试使用另一个几何管理器,如果它似乎更适合您的需求。

于 2020-06-30T09:53:32.413 回答