Python将网格项放在笔记本上

问题描述 投票:2回答:1

我是一个蟒蛇新手,但玩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()
python tkinter
1个回答
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?

© www.soinside.com 2019 - 2024. All rights reserved.