Как назначить элемент Array кнопке tkinter via для каждого цикла? - PullRequest
0 голосов
/ 17 апреля 2019

Я создаю базовый графический интерфейс и хочу назначить кнопке каждый элемент в моем массиве.Кнопки создаются через цикл foreach.

Я пытаюсь заставить кнопку отображать соответствующую букву при нажатии.

Первоначально я думал, что простое добавление атрибута «команда» к кнопке создаст нужную мне связь.Это только печатает список всех писем.Я не хочу, чтобы она печатала каждую букву, а просто печатала любую букву кнопки, которую я нажимаю

Ниже приведен мой текущий код.

    alphabet = ["A", "B", "C", "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N", "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z", " ", " "]
    count = 0

    for r in range(7):
        for c in range(4):
            tk.Button(self.searchFrame, text=alphabet[count], height='4', width='8', bg='white', fg='deep sky blue',
            font=("Helvetica", 18),command=self.listitems(alphabet[count])).grid(row=r,column=c)
            count += 1

def listitems(self, letter):
    print(letter)

Я ожидаю, что при нажатии каждой кнопки будет отображаться соответствующая буква.

Вот как выглядит GUI

1 Ответ

0 голосов
/ 17 апреля 2019

Вопрос : назначить элемент Array кнопке tkinter через для каждого цикла?

Если вы хотите получить Button['text'] при , нажмите, используйте .bind(<Button-1>... вместо command=:

import tkinter as tk

class App(tk.Tk):
    def __init__(self):
        super().__init__()

        for r in range(1, 8):
            for c in range(1, 5):
                btn = tk.Button(self, text=chr((r*4)+c+60),
                                height='1', width='1',
                                bg='white', fg='deep sky blue', font=("Helvetica", 18))
                btn.grid(row=r,column=c)
                btn.bind('<Button-1>', self.listitems)

    def listitems(self, event):
        print(event.widget['text'])

if __name__ == "__main__":
    App().mainloop()

Протестировано с Python: 3,5

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