我正在使用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(
)
答案 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()