1
进出口新的GUI编程GUI类之间的互动,并没有做什么OOP。我在一个基本的计算器应用程序工作,以帮助我学习GUI设计,并刷新OOP。我知道任何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()
林不知道我明白你想要什么。试图传递值的变量是一个StringVar,我正在使用get()方法......可能请详细说明一下......我应该改变什么?由于 – volting 2010-05-12 17:13:33
哇,是我错了,请参阅** **更正谢谢 – msw 2010-05-12 17:29:43
,我猜到了一些愚蠢的事,但我没想到它是那么明显。我认为这个问题是我还在结构化模式模式!尽管这种交互方式显然有效,但是它是标准的和可接受的交互方式,还是有更好的方法呢? – volting 2010-05-12 18:45:50