GUI 프로그래밍에 익숙하지 않으며 많은 OOP를 수행하지 않았습니다. 나는 GUI 디자인을 배우고 OOP를 닦을 수 있도록 기본 계산기 응용 프로그램에서 작업하고 있습니다. 나는 GUI와 관련된 로직을 별도로 유지해야한다는 것을 이해하지만, 필자는 기본적으로 변수를 앞뒤로 전달하는 GUI 클래스에서 로직 간의 상호 작용을 구현하는 방법을 잘 모르고있다.GUI 클래스와 로직 클래스 간의 상호 작용을 실현하는 방법
나는 TKinter를 사용하고 있는데, tkinter 변수를 내 논리로 변환하면 문자열 PY_VAR0을 보유하는 것만 보입니다.
def on_equal_btn_click(self):
self.entryVariable.set(self.entryVariable.get() + "=")
calculator = Calc(self.entryVariable)
self.entryVariable.set(calculator.calculate())
는 임은 메신저 아마 근본적으로 잘못하고 probabaly 정말 바보 같은 일을하고 있는지, 나는 (온라인과 답변을 검색 할) 시간이 실험의 상당한 금액을 지출하지만, 필자는 어떤 곳을 받고 없습니다. 어떤 도움을 주시면 감사하겠습니다.
감사합니다, V
전체 프로그램 (물론 충분한 구조를 보여 ..)
import Tkinter
class Gui(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
self.parent = parent
self.initialize()
def initialize(self):
self.grid()
self.create_widgets()
""" grid config """
#self.grid_columnconfigure(0,weight=1,pad=0)
self.resizable(False, False)
def create_widgets(self):
"""row 0 of grid"""
"""Create Text Entry Box"""
self.entryVariable = Tkinter.StringVar()
self.entry = Tkinter.Entry(self,width=30,textvariable=self.entryVariable)
self.entry.grid(column=0,row=0, columnspan = 3)
self.entry.bind("<Return>", self.on_press_enter)
"""create equal button"""
equal_btn = Tkinter.Button(self,text="=",width=4,command=self.on_equal_btn_click)
equal_btn.grid(column=3, row=0)
"""row 1 of grid"""
"""create number 1 button"""
number1_btn = Tkinter.Button(self,text="1",width=8,command=self.on_number1_btn_click)
number1_btn.grid(column=0, row=1)
def on_equal_btn_click(self):
self.entryVariable.set(self.entryVariable.get() + "=")
calculator = Calc(self.entryVariable.get())
self.entryVariable.set(calculator.calculate())
class Calc():
def __init__(self, equation):
self.equation = equation
def calculate(self):
#TODO: parse string and calculate...
return self.equation
# define undefined functions for sufficiently liberal meanings of "define"
Gui.on_press_enter = Gui.on_equal_btn_click
Gui.on_number1_button_click = Gui.on_equal_btn_click
if __name__ == "__main__":
app = Gui(None)
app.title('Calculator')
app.mainloop()
나는 당신이 뭘하려고하는지 잘 모르겠다. 변수 Im의 값을 전달하려고하면 StringVar이고 get() 메서드를 사용하고 있습니다 ... 조금 더 자세히 설명해 주시겠습니까? 어떻게 변경해야합니까? 감사합니다 – volting
와우, 내가 실수라고 생각 했어 ** 수정 된 ** – msw
고마워, 나는 바보 같은 것을 추측했다. 그러나 나는 그것이 명백 할 것이라고 기대하지 않았다 ... 나는 문제가 여전히 구조화 된 패러다임 모드에 있다고 생각한다! 이 상호 작용 방식이 분명히 효과적 일지는 모르겠지만 상호 작용을 구현하는 표준 및 수용 방식이 있습니까? 아니면 더 좋은 방법이 있습니까? – volting