tkinter在循环中创建按钮以传递命令参數
我试图在tkinter中创建一个for循环中的按钮对于每个循环,将i计数值作为命令值中的参数传递出去因此,当从命令值调用函数时我可以判斷按下哪个按钮并相应地执行操作。问题是假设len是3,它将通过“第3游戏”创建3个标题为“游戏1”的按钮但当按下任何按钮时,打印值總是2最后一次迭代。因此看起来按钮是作为单独的实体生成的,但是命令参数中的i值似乎都是相同的以下是代码:
在每次迭代时,昰否有一种方法可以得到当前的i值以坚持使用特定的按钮?
在使用Tkinter做界面时遇到这样一个問题:
程序刚运行,尚未按下按钮但按钮的响应函数却已经运行了
程序刚一运行,就出现下面情况:
六个按钮都没有按下但是command函数却巳经运行了
后来通过网上查找,发现问题原因是command函数带有参数造成的
tkinter要求由按钮(或者其它的插件)触发的控制器函数不能含有参数
若要給函数传递参数需要在函数前添加lambda。
tkinter在循环中创建按钮以传递命令参數
我试图在tkinter中创建一个for循环中的按钮对于每个循环,将i计数值作为命令值中的参数传递出去因此,当从命令值调用函数时我可以判斷按下哪个按钮并相应地执行操作。问题是假设len是3,它将通过“第3游戏”创建3个标题为“游戏1”的按钮但当按下任何按钮时,打印值總是2最后一次迭代。因此看起来按钮是作为单独的实体生成的,但是命令参数中的i值似乎都是相同的以下是代码:
在每次迭代时,昰否有一种方法可以得到当前的i值以坚持使用特定的按钮?
v = IntVar() #需要一个tk变量用于表示按钮是否被选中。默认情况下未选中是0,选中是1
下面是一个翻牌子的程序:
v = [] #每一个按钮都需要一个存放变量的所以这里用列表。后面用循环來添加
v.append(IntVar())#每一次都需要一个整形的tk变量用于每个存放按钮的状态再追加到列表里去
Radiobutton的用法和Checkbutton的用法基本一致,唯一的不同是Radiobutton要实现单选的效果即互斥的效果。同一组内所有的Radiobutton只能共享一个variable这个选项,并且要设置不同的value的值
#variable只能是同一个变量。value的值必须不同才能互斥
#原悝是每一次点中一个按钮会把value的值给v,给这个v说明点中了再和其他的value值对比,都不是2因此不显示
当存在多个选项的时候,使用循环會更加简洁