Как получить доступ к кнопке внутри класса в tkinter - PullRequest
0 голосов
/ 08 ноября 2019

Я использую Python 3.8.0 и Tkinter 8.6. Я пытаюсь получить доступ к кнопке one с помощью метода button.config, но не знаю, как получить доступ к кнопке вне класса.

Я пытался присвоить имя кнопке один и затем попытка app.name.config(), но это не сработало, и Python не узнал имя.

import tkinter as tk
from tkinter import font
class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.grid()
        self.theWidgets()
    def theWidgets(self):
        self.one = tk.Button(self, text='New Game',command=onePressed())
        self.one.grid(row=0,column=0,padx=100)
        self.two = tk.Button(self, text='Load Game')
        self.two.grid(row=1,column=0,padx=100,pady=10)
        self.three = tk.Button(self, text='Quit', command=self.quit,anchor=tk.W,font='Helvetica 18 bold')
        self.three.grid(row=2, column=0, padx=100, pady=10)

app = Application()

def onePressed():
	#change state of button one to tk.DISABLED

app.mainloop(

)

1 Ответ

0 голосов
/ 08 ноября 2019

Код, управляющий внутренним состоянием члена класса (например, кнопки), обычно принадлежит внутри класса.

Действия нажатия кнопки должны быть определены как часть вашего класса.

(Как и во всем, иногда бывают исключения, но сейчас следуйте вышеописанному).

Для получения дополнительной информации см. En.wikipedia.org/wiki/Encapsulation_(computer_programming).

Все, что вам нужно сделать в вашем примере, это переместить функцию нажатия кнопки в вашем классе и затем связать ее с вашей кнопкой (так же, как вы связали выход с кнопкой 3).

import tkinter as tk
from tkinter import font
class Application(tk.Frame):

    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.grid()
        self.theWidgets()

    def theWidgets(self):
        self.one = tk.Button(self, text='New Game', command=self.onePressed)
        self.one.grid(row=0,column=0,padx=100)
        self.two = tk.Button(self, text='Load Game')
        self.two.grid(row=1,column=0,padx=100,pady=10)
        self.three = tk.Button(self, text='Quit', command=self.quit, anchor=tk.W, font='Helvetica 18 bold')
        self.three.grid(row=2, column=0, padx=100, pady=10)

    def onePressed(self):
        self.one.config(state="disabled")

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