我是一个蟒蛇新手,但玩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()
您希望将小部件放置在网格中的第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?