问题
我正在创建一个应用程序来处理一个人的所有联系方式。记录存储在文本文件中,因此第 5 到第 10 索引由用户给出的每个联系人的昵称组成。我想将所有这些昵称作为按钮列出,当用户选择任何一个按钮时,该联系人的详细信息将使用tkSimpleDialog.showinfo('text','contact details')
.
目标
- 决定在按钮列表中单击了哪个按钮。
- 这是我经常面临的一个问题:将参数传递给回调函数
代码
请注意,此代码没有完成我想要实现的功能。
buttons = []
inFile = open('test','r')
for i in inFile:
thisrecord = i
buttons.append(Button(self.frame,text='Name: %s' %i[5:10],command=self.show(thisrecord))
inFile.close()
我试过的
当我尝试上面的代码时,发生的事情是每次都显示存储在文件中的最后一条记录,无论我按下什么按钮。我发现了为什么会发生这种情况。显然,按钮都是一次创建的,然后每当调用每个按钮时都会调用回调函数。
如果我的按钮数量有限,那么我绝对可以为每个按钮定义函数,然后将它们用作回调。这就是我在我的应用程序的欢迎页面中所做的事情,该页面具有以下按钮:add new contact
等等see details of contact
。
但是在这种情况下,记录的数量不是固定的。所以我在这里修复,不明白该怎么做。
我进一步尝试使用检查按钮,以便用户想要查看的任何记录,他都可以勾选并按继续并继续。但即使这样也失败了,因为首先创建了检查按钮,而不是在代码运行时。
请帮我解决这个问题。
眼镜
Linux Mint 14
Python 2.7
tkinter 8.5