wxpython 學習筆記 第一天

來源:互聯網
上載者:User
它是Python語言對流行的wxWidgets跨平台GUI工具庫的綁定。而wxWidgets是用C++語言寫成的。
  和Python語言與wxWidgets GUI工具庫一樣,wxPython是開源軟體。這意味著任何人都可以免費地使用它並且可以查看和修改它的原始碼,或者貢獻補丁,增加功能。
  wxPython是跨平台的。這意味著同一個程式可以不經修改地在多種平台上運行。現今支援的平台有:32位微軟Windows作業系統、大多數Unix或類Unix系統、蘋果Mac OS X。
  由於使用Python作為程式設計語言,wxPython編寫簡單、易於理解。
1,匯入 wxpython 庫
import wx
2,建立表單構造類
class 名字(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, '工具',size=(300, 200))
3,建立 面板 panel = wx.Panel(self)
設定面板背景
panel.SetBackgroundColour('White')
為狀態顯示欄,顯示在面板最下面
wx.Frame.CreateStatusBar()
#這個為工具菜單,顯示在表單上面,工具菜單一般是有表徵圖的菜單
wx.Frame.CreateToolBar()
#為菜單也是顯示在表單上面
wx.MenuBar()
#功能表列上面的具體菜單
wx.Menu()


關於事件
wx.Frame.Bind
參數一,綁定的時間類型
參數二,觸發的函數
參數三,確定那個表單上的id觸發

關於圖片處理
#擷取圖片對象
image = wx.Image('yuanxiao.jpg', wx.BITMAP_TYPE_JPEG)
#取得位元影像流
temp = image.ConvertToBitmap()

關於具體功能表列
Append方法添加功能表項目
參數一,功能表項目唯一id
參數二,功能表項目名稱
參數三,選擇該菜單時的狀態列顯示文字

AppendMenu方法為添加下一級菜單
參數一,功能表項目唯一id
參數二,功能表項目名稱
參數三,具體的功能表項目對象



關於表單的建構函式
wx.Frame(parent, id=-1, title="", pos=wx.DefaultPosition,
size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE,
name="frame")

我們在別的視窗組件的構造器中將會看到類似的參數。參數的說明如下:

parent:架構的父視窗。對於最上層視窗,這個值是None。架構隨其父視窗的銷毀而銷毀。取決於平台,架構可被限制只出現在父視窗的頂部。在多重文件介面的情況下,子視窗被限制為只能在父視窗中移動和縮放。

id:關於新視窗的wxPython ID號。你可以明確地傳遞一個。或傳遞-1,這將導致wxPython自動產生一個新的ID。

title:視窗的標題。

pos:一個wx.Point對象,它指定這個新視窗的左上方在螢幕中的位置。在圖形化使用者介面程式中,通常(0,0)是顯示器的左上方。這個預設的(-1,-1)將讓系統決定視窗的位置。

size:一個wx.Size對象,它指定這個視窗的初始尺寸。這個預設的(-1,-1)將讓系統決定視窗的初始尺寸。

style:指定視窗的類型的常量。你可以使用或運算來組合它們。

name:架構的內在的名字。以後你可以使用它來尋找這個視窗。

記住,這些參數將被傳遞給父類的構造器方法:wx.Frame.__init__()。

建立wx.Frame子類的方法如下所示:

class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "My Friendly Window",
(100, 100), (100, 100))


關於架構的一些屬性
frame.Show(False) # 使架構不可見.
frame.Show(True) # True是預設值,使架構可見.
frame.Hide() # 等同於frame.Show(False)

關閉表單
wx.Exit()

執行個體程式

#設定python使用的編碼
#coding=utf-8
#載入wx庫
import wx
#架構類
class ToolbarFrame(wx.Frame):
def __init__(self, parent, id):#建構函式
#構造架構
wx.Frame.__init__(self, parent, id, '工具',size=(300, 200))
#填充面板
panel = wx.Panel(self)
#設定面板背景顏色
panel.SetBackgroundColour('White')

#建立狀態列
statusBar = self.CreateStatusBar()
#建立工具列
toolbar = self.CreateToolBar()
#取得工具列表徵圖對象
image = wx.Image('yuanxiao.jpg', wx.BITMAP_TYPE_JPEG)
#取得表徵圖位元影像流
temp = image.ConvertToBitmap()
#建立工具列
toolbar.AddSimpleTool(wx.NewId(),temp, "New", "Long help for 'New'")
#設定工具列位置
toolbar.Realize()
#建立功能表列
menuBar = wx.MenuBar()
#建立功能表項目
menu1 = wx.Menu()
#添加下級功能表項目
menu1.Append(wx.NewId(), "C&ut", "Copy in status bar")
#設定功能表項目裡的分割線
menu1.AppendSeparator()

sm = wx.Menu()
sm.Append(-1,'測試1');
sm.Append(-1,'測試2');
#把二級功能表項目添加到一級菜單
menu1.AppendMenu(-1,'下級',sm);
#把功能表項目添加單功能表列裡
menuBar.Append(menu1, "檔案(&F)")


menu2 = wx.Menu()
nid = wx.NewId()
menu2.Append(nid, "&Copy", "Copy in status bar")
#事件綁定
self.Bind(wx.EVT_MENU, self.onQuit, id=nid)

menu2.Append(wx.NewId(), "C&ut", "")
menu2.Append(wx.NewId(), "&Paste", "")
menu2.AppendSeparator()
menu2.Append(wx.NewId(), "&Options...", "Display Options")
menuBar.Append(menu2, "&Edit")
#設定功能表列展示
self.SetMenuBar(menuBar)
#觸發的事件
def onQuit(self, event):
#彈出框
dlg = wx.MessageDialog(None, 'Is this the coolest thing ever!','MessageDialog', wx.YES_NO | wx.ICON_QUESTION)
result = dlg.ShowModal()
dlg.Destroy()


#執行
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ToolbarFrame(parent=None, id=-1)
frame.Show()
app.MainLoop()

開源項目介紹
http://onlypython.group.javaeye.com/group/blog/309552
講解開發
http://rainytooo.javaeye.com/blog/150228
wxPython in Action 中文文檔
http://www.pythontik.com/blog/article.asp?id=184
作者 三石 sanshi0815
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.