目前使用的環境:windows XP、Python2.5.4、wxPython2.8
使用的教材:Python 3技術手冊、征服Python-語言基礎與典型應用
第一隻程式就從大家都知道的helloword開始吧
程式碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#載入 wx模組
import wx
#建立 MyApp類別並繼承wx.App類別
class MyApp(wx.App):
#overload OnInit函數,OnInit是視窗初始化的一部份
def OnInit(self):
'''建立wx.Frame,parent預設為None;如果不為None則Frame會一直在最上層視窗
title為視窗標題,size為視窗的長寬
'''
frame=wx.Frame(parent=None,title="Hello,wxPython!",size=(320,240))
#顯示視窗
frame.Show()
#回傳值,通常在OnInit函數的回傳值是True
return True
#建立實體
app=MyApp()
#執行程式
app.MainLoop()
程式執行畫面:
第2隻程式,加入MenuBar與StatusBar元件
程式碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
#建立 MyApp類別並繼承wx.App類別
class MyApp(wx.App):
#視窗初始化
def OnInit(self):
#設定視窗的參數,這次新增pos為視窗的起始位置
frame=myFrame(title="視窗",pos=(100,150),size=(320,240))
frame.Show()
#定義這個frame是主frame
self.SetTopWindow(frame)
return True
#建立myFrame類別並繼承wx.Frame類別
class myFrame(wx.Frame):
#定義 __int__()函數
def __init__(self,title,pos,size):
#wx.NewId()是wxPython ID號碼,也可設成-1讓系統自動分配
id=wx.NewId()
#wx.Frame.__int__()函數
wx.Frame.__init__(self,None,id,title,pos,size)
#建立wx.menu實體
menu=wx.Menu()
#設定menu裡面的內容,第一格放"關於"
menu.Append(1,"關於")
#加入分格線
menu.AppendSeparator
#menu的第2格放"exit",其中&x的做用設定快速鍵,會在字的下面加底線標示
menu.Append(2,"E&xit")
#建立wx,MenuBar實體
menuBar=wx.MenuBar()
'''將menu放入menuBar裡面,欄位名稱為"檔案"
所以menubar會長這樣: 檔案->關於 分格線 Exit
'''
menuBar.Append(menu,"檔案")
#設定menuBar的實體
self.SetMenuBar(menuBar)
#定義 main()函數
def main():
app=MyApp()
app.MainLoop()
#執行程式
if __name__=="__main__":
main()
程式執行畫面:
接下來在表單(frame)裡面加入按鈕與設定事件處理
程式碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
class MyApp(wx.App):
def OnInit(self):
frame=MyFrame(title="視窗",pos=(100,150),size=(250,200))
frame.Show()
self.SetTopWindow(frame)
return True
class MyFrame(wx.Frame):
def __init__(self,title,pos,size):
wx.Frame.__init__(self,None,-1,title,pos,size)
#建立panel
panel=wx.Panel(self)
#新增一個按鈕並把它加到panel裡面
button=wx.Button(panel,label="按鈕1",pos=(25,25),size=(60,25))
#建立事件監聽
#按鈕關閉
self.Bind(wx.EVT_CLOSE,self.OnCloseWin)
#按鈕按下
self.Bind(wx.EVT_BUTTON,self.OnClick,button)
#定義按鈕案下的函數
def OnClick(self,event):
wx.MessageBox("你按了按鈕","提示訊息")
#定義按下關閉視窗(右上X)的函數
def OnCloseWin(self,event):
dlg=wx.MessageDialog(None,"確定要關閉程式?","提示訊息",wx.YES_NO)
#按下YES才會關閉視窗
if dlg.ShowModal()==wx.ID_YES:
self.Destroy()
def main():
app = MyApp()
app.MainLoop()
if __name__=="__main__":
main()
程式執行畫面:
1.視窗主畫面
2.按下"按鈕1"時的反應事件
3.按下視窗右上角的X的反應事件
留言列表