wxPython学习笔记

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__ ( self parent ) :
         wx.Frame. __init__ ( self parent id = wx.ID_ANY,  title = u"Test1" pos = wx.DefaultPosition,  size = wx.Size( 500 300 ),
        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( 13 70 90 90 False "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
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
wxPython 学习文档是一套提供给开发者学习和使用 wxPython 的资源和指南。它包含了关于 wxPython 的详细介绍、学习指导、示例代码以及常见问题解答等内容。 wxPython 是一种基于 Python 编程语言的图形用户界面(GUI) 工具包,它使用了 wxWidgets 库作为底层实现,可以用来创建跨平台的桌面应用程序。学习 wxPython 文档是入门 wxPython 开发的重要步骤。以下是 wxPython 学习文档通常包含的内容: 1. 简介和安装指南:文档中会介绍 wxPython 的背景和特点,以及如何在不同操作系统上安装和配置 wxPython。 2. 入门教程:文档会提供一个从零开始的教程,介绍如何创建一个基本的 wxPython 应用程序,包括创建窗口、添加控件、处理事件等。 3. 组件和控件的使用说明:针对不同类型的控件(如按钮、文本框、列表框等),文档会提供详细的使用说明,包括控件的属性、方法、事件等。 4. 常用布局管理器和容器类:文档会介绍 wxPython 中的布局管理器和容器类的使用方法,帮助开发者更灵活地设计界面布局。 5. 高级主题和技巧:文档中会涵盖一些进阶的主题和技巧,如自定义控件、多线程编程、菜单和工具栏的使用等。 6. 示例代码和项目:文档中会提供一些示例代码和项目,用于演示和实践各种 wxPython 的用法和技巧。 7. 常见问题解答和开发者社区:文档中会收集和解答一些常见问题,并提供开发者社区的链接,方便开发者交流和寻求帮助。 通过学习 wxPython 学习文档,开发者可以系统地了解和学习 wxPython,从简单到复杂地掌握 wxPython 的使用技巧,并最终能够自主设计和开发出功能强大、美观易用的桌面应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

limaning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值