如何在tkinter中访问类内部的按钮

时间:2019-11-08 18:18:22

标签: python-3.x tkinter

我正在使用Python 3.8.0和Tkinter 8.6。 我正在尝试通过button.config方法访问按钮 one ,但是我不知道如何在类外部访问按钮。

我尝试为按钮 one 分配一个名称,然后尝试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 :(得分:0)

控制类成员(例如按钮)内部状态的代码通常在类内部

按下按钮的动作应定义为课程的一部分。

(与其他任何东西一样,偶尔会有例外,但现在请遵循上面的内容。)

有关更多详细信息,请参见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()