有很多方法可以将逻辑与GUI分开。通常我建议使用类和回调函数。因此,我创建了一个生成gui的类。但是,转换是由名为do_translation的外部函数执行的。在
MyFrame不太了解do_translation。它只知道它返回translated_str, message,并以字符串作为参数。do_translation也不在任何gui上中继。do_translation只接受一个输入字符串,执行它想要的操作,并返回翻译后的字符串和消息。MyFrame将此函数作为回调函数。你可以做任何其他的翻译功能,只要输入和输出相同,它就可以工作。在
我在这里依靠的是一个“酷”在按摩,这表明翻译是可以的。这是一个糟糕的主意,让它中继“酷”字,但不想改变你的代码太多。或者使用一些错误代码from Tkinter import *
import tkMessageBox
class MyFrame(Frame):
def __init__(self, master, input_callback=None, **kwargs):
Frame.__init__(self, master)
self.set_input_callback(input_callback)
self.create_widgets()
self.pack()
def create_widgets(self):
self.input = StringVar() # stores user input into this variable as a string.
self.labeltitle1 = Label(text="Hello there! This is my Pig Latin Translator!")
self