OPC 접근법을 사용하고 상속을 배우려고하는 Python 2.11을 사용하여 Tkinter에 GUI를 작성합니다. ButtonField라는 자식 클래스를 작성했으며이 클래스는 tk.Button에서 상속받습니다. ButtonField 안에 나는 눌렀을 때 버튼의 색상과 텍스트를 변경하는 pressMe라는 메서드가 있습니다.버튼 위젯을 사용하여 Tkinter에서 적절한 상속 사용
나의 궁극적 인 목표는보다 깨끗하고 관리하기 쉬운 코드를 위해 ButtonField 클래스에 포함 된 GUI와 관련된 모든 메소드에 더 많은 버튼을 포함시키는 것입니다.
버튼을 누르면 화면에 "Press Me Method"텍스트가 표시되어 메소드가 작동하지만 버튼 위젯이 텍스트 나 배경색을 변경하지 않습니다.
import Tkinter as tk
class MainWindow(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
self.olFrame = tk.LabelFrame(text = 'Initial Frame', bg = 'grey')
self.olFrame.grid(column = 0, row = 0, sticky = 'w')
self.simpleButton = ButtonField(self.olFrame, text = "Press Me",bg= "green"
,command = ButtonField(self).pressMe)
self.simpleButton.grid(column = 0, row = 0)
class ButtonField(tk.Button):
def __init__(self, parent, *args, **kwargs):
tk.Button.__init__(self, parent, *args, **kwargs)
self.parent = parent
def pressMe(self):
print "In Press Me Method"
self.configure(text = "Pressed Now", background = "yellow")
#self.parent.configure(self, text = "Pressed Now", background = "yellow") #returns TclError: unknow option "-text"
root = tk.Tk()
root.geometry('500x400')
root.title('Test GUI')
root.configure(background = "black")
a = MainWindow(root)
root.mainloop()
특정 버그에 대한 좋은 대답을 가지고 있지만 모든 것을 상속 받으려는 계획은 좋지 않습니다. 아이디어는 이미 존재하는 것보다 복잡한 코드로 만들 것입니다. 완전히 새로운 위젯을 만드는 경우가 아니라면 대부분의 tkinter 예제에서 볼 수있는 것처럼 구성 및 위임을 사용하십시오. – pvg