【问题标题】:Difficulty using the function功能使用困难
【发布时间】:2021-06-10 14:55:21
【问题描述】:

我想在每次点击“btn1”时为表格的长度和宽度添加一个单位。这是代码:

from tkinter import*
win=Tk()
y=3
def func():
    global y
    y+=1
func()
for i in range(1,y):
    for j in range(1,y):
        frm=Frame(win,bd=2)
        frm.grid(row=i,column=j)
        btn=Button(frm,bg="red")
        btn.grid()
btn1=Button(win,command=func)
btn1.grid()
win.mainloop()

【问题讨论】:

  • 究竟出了什么问题?
  • 回调在改变 y 时为时已晚。设置网格的 for 循环已经运行,并且在您按下按钮时完成。您将需要一种在回调函数中重新创建或添加到网格的方法。
  • 每次点击,3 * 3 的表格都会保留。
  • 当然它仍然存在,因为您的回调仅在 y 用于制作表格后才改变。您的回调没有改变表格。

标签: python function tkinter


【解决方案1】:

创建一个单独的函数来添加框架。

这样,每次单击按钮时,都会将新框架添加到窗口中。我们还在定义btn1 之前调用了一次该函数,这样我们就有了一个可以点击的按钮。

from tkinter import*
win=Tk()
y=3

def addFrames():
    for i in range(1,y):
        for j in range(1,y):
            frm=Frame(win,bd=2)
            frm.grid(row=i,column=j)
            btn=Button(frm,bg="red")
            btn.grid()
def func():
    global y
    y+=1
    addFrames()

addFrames()
btn1=Button(win,command=func)
btn1.grid()
win.mainloop()

【讨论】:

    猜你喜欢
    • 2019-09-11
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2013-12-06
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    相关资源
    最近更新 更多