основной вопрос о кнопках tkinter - PullRequest
1 голос
/ 31 мая 2011

Я новичок в использовании tkinter и GUI программирования в целом, так что это может быть довольно простой вопрос. В любом случае, предположим, что у меня есть набор кнопок, из которых пользователь может выбирать, и мне нужен список всех объектов кнопок, которые были нажаты пользователем. По сути, я хочу знать, на какие кнопки нажимал пользователь.

Ответы [ 3 ]

1 голос
/ 31 мая 2011

На каждой кнопке вы можете задать команду для добавления себя в список нажатых кнопок.

clicked = []
foo = Button(root, text='bar', command=lambda self:clicked.append(self))

Не уверен, что синтаксис правильный, но это основная идея.

1 голос
/ 01 июня 2011

Вот простой пример того, что вы можете сделать, чтобы узнать, была ли кнопка нажата или еще не нажата.

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, чтобы узнать, была ли нажата кнопка или нет.

1 голос
/ 31 мая 2011

Вот хороший сайт, посвященный событиям Python, который должен вам помочь:

http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

Звучит так, как будто вы хотите что-то похожее на флажок, если так:

Не могу понять, как получить данные из флажка в wxpython

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...