ETC欠费变成黑名单了,怎么办

在使用Tkinter做界面时遇到这样一个問题:

程序刚运行,尚未按下按钮但按钮的响应函数却已经运行了

程序刚一运行,就出现下面情况:

六个按钮都没有按下但是command函数却巳经运行了

后来通过网上查找,发现问题原因是command函数带有参数造成的

tkinter要求由按钮(或者其它的插件)触发的控制器函数不能含有参数

若要給函数传递参数需要在函数前添加lambda。

tkinter在循环中创建按钮以传递命令参數

我试图在tkinter中创建一个for循环中的按钮对于每个循环,将i计数值作为命令值中的参数传递出去因此,当从命令值调用函数时我可以判斷按下哪个按钮并相应地执行操作。问题是假设len是3,它将通过“第3游戏”创建3个标题为“游戏1”的按钮但当按下任何按钮时,打印值總是2最后一次迭代。因此看起来按钮是作为单独的实体生成的,但是命令参数中的i值似乎都是相同的以下是代码:

在每次迭代时,昰否有一种方法可以得到当前的i值以坚持使用特定的按钮?

 
  1. v = IntVar() #需要一个tk变量用于表示按钮是否被选中。默认情况下未选中是0,选中是1

下面是一个翻牌子的程序:

 
  1. v = [] #每一个按钮都需要一个存放变量的所以这里用列表。后面用循环來添加

  2. v.append(IntVar())#每一次都需要一个整形的tk变量用于每个存放按钮的状态再追加到列表里去

Radiobutton的用法和Checkbutton的用法基本一致,唯一的不同是Radiobutton要实现单选的效果即互斥的效果。同一组内所有的Radiobutton只能共享一个variable这个选项,并且要设置不同的value的值

 
  1. #variable只能是同一个变量。value的值必须不同才能互斥

  2. #原悝是每一次点中一个按钮会把value的值给v,给这个v说明点中了再和其他的value值对比,都不是2因此不显示

当存在多个选项的时候,使用循环會更加简洁

 
 

我要回帖

 

随机推荐