Python在笔记本上放置网格项

时间:2019-02-16 09:58:28

标签: python tkinter

我是python新手,但正在玩tkinter。我在带有多个标签的窗口中创建了一个笔记本。我试图将小部件放置在选项卡上,但我无法定位它,只是一直转到选项卡的右上角。我正在尝试使用网格的行和列,但似乎忽略了它。抱歉,这是一个基本问题!

预先感谢

from tkinter import *
from tkinter import ttk


main = Tk()
main.title("Deploy")
main.geometry("1250x900")

rows = 0
while rows < 50:
    main.rowconfigure(rows,weight=1)
    main.columnconfigure(rows,weight=1)
    rows += 1


nb = ttk.Notebook(main)
nb.grid(row=1, column=0, columnspan=50, rowspan=49, sticky='NESW')

page1=ttk.Frame(nb)
nb.add(page1,text='Tab1')
page2=ttk.Frame(nb)
nb.add(page2,text='Tab2')
page3=ttk.Frame(nb)
nb.add(page3,text='Tab3',state="disabled")
page4=ttk.Frame(nb)
nb.add(page4,text='Tab4',state="disabled")
page5=ttk.Frame(nb)
nb.add(page5,text='tab5',state="disabled")

labelL1 = ttk.Label(page1, text="User name:")
labelL1.grid(row=10, column=10,sticky='WE', columnspan=3)


main.mainloop()

1 个答案:

答案 0 :(得分:2)

您想将小部件放置在网格的第10行,第10列,但是这里的问题是,由于网格中的前面的列和行是空的,因此它们不占用任何空间。

要实现定位,可以给行和列提供最小的尺寸,这样即使是空的行和列也要占用空间:

from tkinter import *
from tkinter import ttk


main = Tk()
main.title("Deploy")
main.geometry("1250x900")

rows = 0
while rows < 50:
    main.rowconfigure(rows, weight=1)
    main.columnconfigure(rows, weight=1)
    rows += 1


nb = ttk.Notebook(main)
nb.grid(row=1, column=0, columnspan=50, rowspan=49, sticky='NESW')

page1=ttk.Frame(nb)
nb.add(page1, text='Tab1')
page2=ttk.Frame(nb)
nb.add(page2, text='Tab2')
page3=ttk.Frame(nb)
nb.add(page3, text='Tab3', state="disabled")
page4=ttk.Frame(nb)
nb.add(page4, text='Tab4', state="disabled")
page5=ttk.Frame(nb)
nb.add(page5, text='tab5', state="disabled")

labelL1 = ttk.Label(page1, text="User name:")

# add this to give a min size to empty rows
rows = 0
while rows < 10:
    page1.rowconfigure(rows,weight=1, minsize=1)
    page1.columnconfigure(rows, weight=1, minsize=1)
    #ttk.Label(page1, text="-").grid(row=rows, column=0)
    rows += 1

labelL1.grid(row=10, column=10, sticky='WE', columnspan=3)


main.mainloop()

但是也许其他解决方案更符合grid的概念,例如使用padx, padx options

一个类似的问题:Tkinter.grid spacing options?