<p>下面是一个简单的(python 2.x)示例,说明如何1<em>not</em>使用globals和2使用(简单)域模型类。</p>
<p>要点是:首先应该独立于用户界面设计域模型,然后编写调用域模型的用户界面代码。在本例中,您的UI是一个Tkinter GUI,但是同一个域模型应该能够使用命令行UI、web UI或其他东西。</p>
<p>注意:对于python 3.x,将<code>Tkinter</code>替换为<code>tkinter</code>(小写),您可以去掉<code>Model</code>的<code>object</code>基类。</p>
<pre><code>import random
from Tkinter import *
class Model(object):
def __init__(self):
self.currentMovie = 0
def UpdateCurrentMovie(self):
self.currentMovie = random.randint(0, 100)
print(self.currentMovie)
def UpdateWatched(self):
print(self.currentMovie)
def ExampleWithArgs(self, arg):
print("ExampleWithArg({})".format(arg))
def main():
model = Model()
root = Tk()
root.title("MovieSelector9000")
root.geometry("900x600")
app = Frame(root)
app.grid()
canvas = Canvas(app, width = 300, height = 75)
canvas.pack(side = "left")
button1 = Button(canvas, text = "SetRandomMovie", command=model.UpdateCurrentMovie)
button2 = Button(canvas, text = "GetRandomMovie", command=model.UpdateWatched)
button3 = Button(canvas, text = "ExampleWithArg", command=lambda: model.ExampleWithArgs("foo"))
button1.pack(anchor = NW, side = "left")
button2.pack(anchor = NW, side = "left")
button3.pack(anchor = NW, side = "left")
root.mainloop()
if __name__ == "__main__":
main()
</code></pre>