文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>First Steps《The wxPython tutorial》

First Steps《The wxPython tutorial》

时间:2010-01-30  来源:pywugw

Simple example

#!/usr/bin/env python
# simple.py
import wx

app = wx.App()

frame = wx.Frame(None, -1, 'simply.py')
frame.Show()

app .MainLoop()




import wx


这里首先导入wxPython模块,所有的对象和函数都是以wx为开头的。

app = wx.App()


每个wxPython程序必须有一个App对象。

frame = wx.Frame(None, -1, 'simple.py')
frame.Show()


这里创建了一个wx.Frame的部件,wx.Frame是一个很重要的容器部件。其中第一个参数指明父部件为None,表明它本身就是顶级部件。当创建一个wx.Frame对象时,必须要调用Show()方法来将它呈现出来。

app.MainLoop()


最后一行是一个无限的循环,用来获取和调度所有的事件。

wx.Frame

wx.Frame是wxPython中最重要的部件之一。wx.Frame是一个容器的部件,也就意味着它可以嵌入其他的部件,除了wx.Frame和wx.Dialogd的其他
窗口部件。wx.Frame由标题栏,边框,和中间的容器区域组成。
标题栏和边框是可选的,

wx.Frame(wx.Window parent, int id=-1, string title='', wx.Point pos = wx.DefaultPosition, wx.Size size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE, string name = "frame")


上面的构造函数包括7个参数,其中第1个参数没有默认值,其他的6个参数都有默认值。wx.Point为呈现窗体的坐标位置,wx.Size为窗体的大小。wx.DEFAULT_FRAME_STYLE是wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN的值,标记着窗体的样式。

#!/usr/bin/python

# nominimizebox .py

import wx

app = wx.App()
window = wx.Frame(None, style=wx.MAXIMIZE_BOX | wx.RESIZE_BORDER
         | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
window.Show(True)

app .MainLoop()



上面创建了一个没有最小化按钮的Frame窗口。

Size and Position

有两种方法可以设置wx.Frame的大小,一种是在构造函数的size参数设置或调用SetSize()方法来设置。

#!/usr/bin/python

# size .py

import wx

class Size(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(250, 200))

        self .Show(True)


app = wx.App()
Size(None, -1, 'Size')
app.MainLoop()

Method Description
Move(wx.Point point) move a window to the given position
MoveXY(int x, int y) move a window to the given position
SetPosition(wx.Point point) set the position of a window
SetDimensions(wx.Point point, wx.Size size) set the position and the size of a window

#!/usr/bin/python

# move .py

import wx

class Move(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)

        self .Move((800, 250))
        self.Show(True)


app = wx.App()
Move(None, -1, 'Move')
app.MainLoop()


wx.Frame可以调用Maximize()和Centre()函数来调整窗口位置。

#!/usr/bin/python

# centre.py

import wx

class Centre(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)

        self.Centre()
        self.Show(True)

app = wx.App()
Centre(None, -1, 'Centre')
app.MainLoop()


Widgets communicate

#!/usr/bin/python

# communicate.py

import wx


class LeftPanel(wx.Panel):
    def __init__(self, parent, id):
        wx.Panel.__init__(self, parent, id, style=wx.BORDER_SUNKEN)

        self.text = parent.GetParent().rightPanel.text

        button1 = wx.Button(self, -1, '+', (10, 10))
        button2 = wx.Button(self, -1, '-', (10, 60))

        self.Bind(wx.EVT_BUTTON, self.OnPlus, id=button1.GetId())
        self.Bind(wx.EVT_BUTTON, self.OnMinus, id=button2.GetId())

    def OnPlus(self, event):
        value = int(self.text.GetLabel())
        value = value + 1
        self.text.SetLabel(str(value))

    def OnMinus(self, event):
        value = int(self.text.GetLabel())
        value = value - 1
        self.text.SetLabel(str(value))


class RightPanel(wx.Panel):
    def __init__(self, parent, id):
        wx.Panel.__init__(self, parent, id, style=wx.BORDER_SUNKEN)
        self.text = wx.StaticText(self, -1, '0', (40, 60))


class Communicate(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(280, 200))

        panel = wx.Panel(self, -1)
        self.rightPanel = RightPanel(panel, -1)

        leftPanel = LeftPanel(panel, -1)

        hbox = wx.BoxSizer()
        hbox.Add(leftPanel, 1, wx.EXPAND | wx.ALL, 5)
        hbox.Add(self.rightPanel, 1, wx.EXPAND | wx.ALL, 5)

        panel.SetSizer(hbox)
        self.Centre()
        self.Show(True)

app = wx.App()
Communicate(None, -1, 'widgets communicate')
app.MainLoop()



排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载