[英]basic question about tkinter buttons
我不熟悉使用 tkinter 和一般的 GUI 编程,所以这可能是一个非常基本的问题。 无论如何,假设我有一组按钮供用户选择,我想要的是用户单击的所有按钮对象的列表。 基本上,我想知道用户点击了哪些按钮。
这是一个涵盖 Python 事件的好网站,可以指导您:
http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm
听起来您可能想要类似于复选框的东西,如果是这样:
在每个按钮上,您可以设置命令以将自己添加到单击按钮列表中。
clicked = []
foo = Button(root, text='bar', command=lambda self:clicked.append(self))
不确定语法是否全部正确,但这是基本思想。
这是一个简单的示例,说明您可以执行哪些操作来确定按钮是否已被按下。
import tkinter.ttk, functools
class Example(tkinter.Tk):
def __init__(self, buttons):
super().__init__()
self.button_set = set()
for button in range(buttons):
button = tkinter.ttk.Button(self, text='Button '+str(button))
button.pack()
self.button_set.add(button)
self.setup_buttons()
self.bind('<Escape>', self.check_buttons)
self.mainloop()
def setup_buttons(self):
for button in self.button_set:
button['command'] = \
functools.partial(setattr, button, 'pressed', True)
button.pressed = False
def check_buttons(self, event):
for button in self.button_set:
print('Button {} has{} been pressed.'.format(id(button),
(' not', '')[button.pressed]))
if __name__ == '__main__':
Example(5)
运行代码时,您可以按Escape
键在控制台中打印出已按下的按钮。 按下按钮会将它们的pressed
属性设置为 true,并且您可以得到另一个打印输出的按钮被按下的信息。 以编程方式,您将按照check_buttons
方法中的示例来确定是否按下了按钮。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.