【发布时间】:2021-07-21 14:49:05
【问题描述】:
有没有办法使用 tkinter 获取根窗口或顶层中使用的最后一行和最后一列?
目的是在每次按下按钮时在新的一行中两个两个地添加输入框。
所以我会使用最后使用的行的信息来使用 grid() 来定位新生成的输入框。
提前致谢。
【问题讨论】:
-
只需使用一个全局变量来存储最后使用的网格行。
标签: tkinter
有没有办法使用 tkinter 获取根窗口或顶层中使用的最后一行和最后一列?
目的是在每次按下按钮时在新的一行中两个两个地添加输入框。
所以我会使用最后使用的行的信息来使用 grid() 来定位新生成的输入框。
提前致谢。
【问题讨论】:
标签: tkinter
您可以使用grid_size 方法,该方法返回编号最高的行和列。
official documentation 是这么说的:
返回容器的网格大小(列然后行)。大小取决于占据最大行或列的内容,或具有非零的 -minsize、-weight 或 -pad 的最大列或行。
【讨论】:
您可以使用grid_info()跟踪网格
这里有一个代码 sn-p 来演示这一点。
import tkinter as tk
root = tk.Tk()
e = tk.Entry( root )
e.grid( row = 0, column = 0, sticky = tk.NSEW )
print( e.grid_info() )
【讨论】:
感谢 Bryan Oakley 的解决方案:
from tkinter import *
#------------------------------------
def addBox():
row=root.grid_size()
row = row[1]
ent = Entry(root)
ent.grid(row = row,column=0)
ent1 = Entry(root)
ent1.grid(row = row, column=1)
all_entries.append(ent)
all_entries.append(ent1)
#------------------------------------
def showEntries():
for number, ent in enumerate(all_entries):
print (number, ent.get())
#------------------------------------
all_entries = []
root = Tk()
showButton = Button(root, text='Print Text of each Entry Box', command=showEntries)
showButton.grid(row=0, column = 0)
addboxButton = Button(root, text='Add Entry Boxes', fg="Red", command=addBox)
addboxButton.grid(row=0, column = 1)
root.mainloop()
【讨论】: