wxPython学习笔记

来源:互联网 发布:vb的注释符号 编辑:程序博客网 时间:2024/05/29 11:22

import wx

class App(wx.App):                           //定义wx.App的子类

       defOnInit(self):

             frame = wx.Frame(parent=None,title=’Bare’)

             frame.Show()

             return True

app = App()                         //创建wx.App子类(App)的实例,实例化

app.MainLoop()

------------------------------------------------------------

frame.Show(True)             frame.Show(False)

 
更简单的实现方式:

import wx
app wx.App()
frame wx.Frame(None,-1,u"Just do it")
frame.Show()
app.MainLoop()


 

----------------------------------------------------------------------

#!/usr/bin/env python

import wx

class Frame(wx.Frame):

       pass

 

class App(wx.App):

       defOnInit(self):

              self.frame= Frame(parent=None, title=’Spare’)

              self.frame.Show()

              self.SetTopWindow(self.frame)

              returnTrue

if __name__ == ’__main__’:

       app= App()

       app.MainLoop()

 

SetTopWindow()方法是一个可选的方法,它让wxPython 方法知道哪个框架或对话框将被认为是主要的。一个wxPython程序可以有几个 框架,其中有一个是被设计为应用程序的顶级窗口的。

 

 

 

#!/usr/bin/env python

“””Hello, wxPython! program.”””

import wx

class Frame(wx.Frame):               //定义wx.frame的子类

    def __init__(self, image, parent=None, id=-1,                    pos=wx.DefaultPosition,                  title=’Hello, wxPython!’):                  temp = image.ConvertToBitmap()                             size = temp.GetWidth(), temp.GetHeight()         wx.Frame.__init__(self, parent, id, title, pos, size)           self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)

 

class App(wx.App):

    def OnInit(self):        image = wx.Image(‘wxPython.jpg’, wx.BITMAP_TYPE_JPEG)           self.frame = Frame(image)

        self.frame.Show()

       self.SetTopWindow(self.frame)

       return True

def main():

       app = App()

   app.MainLoop()

if __name__ == ’__main__’:

       main()

 

 

1、定义这个子类

2、在定义的子类中写一个OnInit()方法

3、在你的程序的主要部分创建这个类的一个实例

4、调用应用程序实例的MainLoop()方法。这个方法将程序的控制权转交wxPython

 

使用wxFormBuilder:

# -*- coding: utf-8 -*-


import wx
import wx.xrc

class testFrame1(wx.Frame):
    def __init__(selfparent):
        wx.Frame.__init__(selfparentid=wx.ID_ANY, title=u"Test1"pos=wx.DefaultPosition, size=wx.Size(500300),
        style=wx.DEFAULT_FRAME_STYLE wx.TAB_TRAVERSAL)

        self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
        self.SetForegroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW))

        bSizer4 wx.BoxSizer(wx.VERTICAL)

        self.m_staticText1 wx.StaticText(self, wx.ID_ANY, u"这是一个文本框", wx.DefaultPosition, wx.DefaultSize, 0)
        self.m_staticText1.Wrap(-1)
        self.m_staticText1.SetFont(wx.Font(13709090False"STXinwei"))

        bSizer4.Add(self.m_staticText1, 0, wx.ALL wx.ALIGN_CENTER_HORIZONTAL, 5)

        self.SetSizer(bSizer4)
        self.Layout()

        self.Centre(wx.BOTH)

    def __del__(self):
        pass


#增加以下代码,进入主程序
if __name__=='__main__':
    app wx.App()
    frame=testFrame1(None)
    frame.Show()

  app.MainLoop() 

----------------------------------------------------------------------------------

接下来,尝试加入菜单:
 
# -*- coding: utf-8 -*-
import wx
import wx.xrc
class testFrame1(wx.Frame):
    def __init__(selfparent):
        wx.Frame.__init__(selfparentid=wx.ID_ANYtitle=u""pos=wx.DefaultPositionsize=wx.Size(500300),
                          style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
        self.SetSizeHintsSz(wx.DefaultSizewx.DefaultSize)
        self.SetForegroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW))
        self.m_menubar1 = wx.MenuBar(0)
        self.m_menu1 = wx.Menu()
        self.m_menu11 = wx.Menu()
        self.m_menuItem2 = wx.MenuItem(self.m_menu11wx.ID_ANYu""wx.EmptyStringwx.ITEM_NORMAL)
        self.m_menu11.AppendItem(self.m_menuItem2)
        self.m_menuItem6 = wx.MenuItem(self.m_menu11wx.ID_ANYu""wx.EmptyStringwx.ITEM_NORMAL)
        self.m_menu11.AppendItem(self.m_menuItem6)
        self.m_menu1.AppendSubMenu(self.m_menu11u"")
        self.m_menuItem3 = wx.MenuItem(self.m_menu1wx.ID_ANYu""wx.EmptyStringwx.ITEM_NORMAL)
        self.m_menu1.AppendItem(self.m_menuItem3)
        self.m_menuItem4 = wx.MenuItem(self.m_menu1wx.ID_ANYu"退"wx.EmptyStringwx.ITEM_NORMAL)
        self.m_menu1.AppendItem(self.m_menuItem4)
        self.m_menubar1.Append(self.m_menu1u"")
        self.m_menu2 = wx.Menu()
        self.m_menubar1.Append(self.m_menu2u"")
        self.SetMenuBar(self.m_menubar1)
        self.Centre(wx.BOTH)
    def __del__(self):
        pass
#
if __name__=='__main__':
    app = wx.App()
    frame=testFrame1(None)
    frame.Show()
    app.MainLoop()
 运行结果是这样的:
图片 
Linux和Mac,菜单栏默认都是显示在最上方的。这点要注意。 

    至于按钮,选项卡等,用的时候再说。布局方面,有点像bootstrap,横切,纵切。接下来就是函数调用了。发现自己前端做出来会很丑,而web做桌面,一直没有一个通用的合适的框架,网易的HeX好像还可以,改天要试试看,如果web做跨平台桌面,能够调用python函数就好了,因为只会用python写函数。
    感慨一下:什么时候XCode能够用原生swift,storyboard写跨平台桌面哇,swift写UI,python写算法,这大概就是我的开发理想了吧。

控件调用函数,大同小异,声明事件,链接函数,获取值。
0 0
原创粉丝点击