【问题标题】:Tkinter get last row used in a window or a toplevelTkinter 获取窗口或顶层中使用的最后一行
【发布时间】:2021-07-21 14:49:05
【问题描述】:

有没有办法使用 tkinter 获取根窗口或顶层中使用的最后一行和最后一列?

目的是在每次按下按钮时在新的一行中两个两个地添加输入框。

所以我会使用最后使用的行的信息来使用 grid() 来定位新生成的输入框。

提前致谢。

【问题讨论】:

  • 只需使用一个全局变量来存储最后使用的网格行。

标签: tkinter


【解决方案1】:

您可以使用grid_size 方法,该方法返回编号最高的行和列。

official documentation 是这么说的:

返回容器的网格大小(列然后行)。大小取决于占据最大行或列的内容,或具有非零的 -minsize、-weight 或 -pad 的最大列或行。

【讨论】:

    【解决方案2】:

    您可以使用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() )
    

    【讨论】:

      【解决方案3】:

      感谢 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()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多