2008/04/09

Python 下的图形界面开发

据我所知有三种:
1。 用 glade产生图形界面, 即 python + gtk + glade. 此法生成的界面最美观.
import pygtk, gtk, gtk.glade
一个只用 gtk, 没用glade工具的例子
import pygtk
import gtk

class HelloWorld:
def hello(self,widget,data=None):
print "Hello World!"

def delete_event(self,widget,data=None):
print "delete_event"
return gtk.FALSE

def destroy(self,widget,data=None):
gtk.main_quit()

def __init__(self):
self.window=gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("delete_event",self.delete_event)
self.window.connect("destroy",self.destroy)
self.window.set_border_width(10)
self.button=gtk.Button("Hello World!") self.button.connect("clicked",self.hello,None)
self.button.connect_object("clicked",gtk.Widget.destroy,self.window)
self.window.add(self.button)

self.button.show()
self.window.show()

def main(self):
gtk.main()

if __ name__=="__main__":
hello=HelloWorld()
hello.main()

2。 用 Tkinter 即 gui based on Tcl/tk .此绘图法最为简单,可能需要安装 python-tk.参考 python_notes.pdf -> Tkinter programming
example:
import Tkinter
#创建一个窗体:
wnd = Tk()
#加一个按钮:
btn = Button(master=wnd, text="Exit",command=wnd.quit)
btn.pack() #pack之后才显示

#或者通常把 btn 加到 wnd 下面:
wnd.btn = Button(master=wnd, text="Exit", command=wnd.quit)
wnd.btn.pack()

#最后, 让这个窗口跑起来:
wnd.mainloop()

3. 用 wxPython。一个例子是手机上的图形界面。参考python for S60 doc.pdf -> wxpthon 模块部分,或 www.wxpython.org .
import appuifw
import e32

def bexit():
app_lock.signal()

def addtext() :
t = appuifw.query(u'Input text:', 'text')
r.add(unicode(t))

r = appuifw.Text()
r.set(u'info:\n')
appuifw.app.screen = 'normal'
appuifw.app.menu = [(u'Add', addtext), (u'Exit', bexit)]
appuifw.app.body = r
appuifw.app.exit_key_handler = bexit
app_lock = e32.Ao_lock()
app_lock.wait()


python tkinter: 一个画圆的例子

from Tkinter import *

canvas = Canvas(width=300, height=300, bg='white')
canvas.pack(expand=YES, fill=BOTH)

canvas.create_oval(10, 10, 200, 200, width=2, fill='blue')

mainloop()


没有评论: