• wxPython学习笔记(初识)


    今天正式开始学习wxPython,基于对类的不熟悉,理解有点生硬,但还是做了些笔记。

    1、是什么组成了一个wxpython程序?

    一个wxpython程序必须有一个application(wx.App)对象和至少一个frame(wx.Frame)对象。而用于填充frame的则是一系列的wx.Window的子类,wx.Window的子类都可以拥有wx.Control的子类,在上图中,panel就是最常见的wx.Window的子类之一,而wx.StaticText和wx.TextCtrl则是最常见的wx.Control之一。

    1)常用的wx.Window的子类有哪些?

    常用的如wx.Panel、wx.StatusBar、wx.SplitterWindow、wx.PopupWindow、wx.TopLevelWindow,以上这些类都直接继承了_core.Window,在_windows.py中实现。除此之外还有MenuBar、Control,在_core.py中实现。

    Python的命名具有很好的见名知意效果,而需要备注一笔的是,wx.Frame和wx.Dialog实际上就是wx.TopLevelWindow的子类,其中wx.Frame的实例可以通过

    SetMenuBar、GetMenuBar、

    CreateStatusBar、GetStatusBar、SetStatusBar、SetStatusText、

    CreateToolBar、GetToolBar、SetToolBar

    等方法与菜单栏、状态栏和工具栏进行交互,其中wx.ToolBar属于wx.Controls。

    2)其他的wx.Window子类还有哪些?

    比较少用的则有wx.MDIClientWindow、wx.SashWindow、wx.SplashScreenWindow、wx.PyWindow,这些也都是直接继承了_core.Window,在_windows.py中实现。

    3)wx.Control的子类有哪些?

    他们是:

    wx.ToolBarBase、wx.ListCtrl、wx.TreeCtrl、wx.GenericDirCtrl、wx.PyControl、wx.DatePickerCtrlBase、wx.HyperlinkCtrl、wx.PickerBase、wx.CollapsiblePane、wx.SearchCtrlBase、wx.InfoBar、wx.AnyButton、wx.CheckBox、wx.Gauge、wx.StaticBox、wx.StaticLine、wx.StaticText、wx.StaticBitmap、wx.ScrollBar、wx.SpinButton、wx.SpinCtrl、wx.SpinCtrlDouble、wx.RadioBox、wx.RadioButton、wx.Slider。

    2、是什么让程序工作?

    见:WxPython In Action/ChapterThree 

    1)wxpython有哪些事件?

    在wxpython中,代表事件的是事件对象——wx.Event或其子类。

    wx.Event的子类有

    wx.CloseEvent:当关闭一个框架的时候被触发

    wx.CommandEvent:这是与窗口控件的交互事件,包括菜单栏选择、单击一个button等等,这应该是涉及最广的

    wx.KeyEvent:键盘按键事件

    wx.MouseEvent:鼠标事件

    wx.PaintEvent:当窗口内容需要被重画时触发

    wx.SizeEvent:窗口大小或布局

    wx.TimerEvent:由类wx.Timer类创建,是定期的事件

    2)最常用的事件是鼠标事件

    由于wxPython被用于开发桌面软件而非Android/iOS,我们的操作都是通过鼠标完成。所以很有必要弄清楚wxPython的鼠标事件都有哪些,鼠标事件一共有14个:

    wx.EVT_LEFT_DOWN

    wx.EVT_LEFT_UP

    wx.EVT_LEFT_DCLICK 

    wx.EVT_MIDDLE_DOWN

    wx.EVT_MIDDLE_UP

    wx.EVT_MIDDLE_DCLICK 

    wx.EVT_RIGHT_DOWN

    wx.EVT_RIGHT_UP

    wx.EVT_RIGHT_DCLICK

    wx.EVT_MOTION

    wx.ENTER_WINDOW

    wx.LEAVE_WINDOW

    wx.EVT_MOUSEWHEEL

    wx.EVT_MOUSE_EVENTS

    3)涉及最广的事件是命令事件

    EVT_COMMAND(id, event, func)

    EVT_COMMAND_RANGE(id1, id2, event, func)

    EVT_BUTTON(id, func)

    EVT_CHECKBOX(id, func)

    EVT_MENU(id, func)

    EVT_COMMAND_LEFT_CLICK(id, func)

    EVT_COMMAND_LEFT_DCLICK(id, func)

    EVT_COMMAND_RIGHT_CLICK(id, func)

    EVT_COMMAND_SET_FOCUS(id, func)

    EVT_COMMAND_KILL_FOCUS(id, func)

    EVT_COMMAND_ENTER(id, func)

    4)绝对布局

    特点:1、基于控件的坐标摆放控件,2、简单直观,方法单一,3、不能随窗口的改变而调整位置

    静态文本:wx.StaticText

    文本域:wx.TextCtrl

    按钮:wx.Button

    单选与复选按钮:wx.CheckBox / wx.RadioButton

    列表框:wx.ListBox

    图片:wx.StaticBitmap

    5)相对布局

    BoxSizer

    GridSizer

    FlexGridSizer

    GridBagSizer

    6)多线程与事件

    要点:1、不使用多线程可能会导致图形界面卡死,

               2、更高效率,更多任务,

               3、thread.start_new_thread(函数名,(参数1,参数2,...))

               4、使用Threading模块创建线程

    7)控件事件

    按钮点击、文本域内容的改变、鼠标滑过、键盘按下

  • 相关阅读:
    Linux统计文件个数
    python string与list互转
    Python中请使用isinstance()判断变量类型
    xpath提取多个标签下的text
    内存盘
    Watchdog
    渗透测试
    GMT与UTC简介
    ASN.1(抽象语法标记)
    Linux nmap
  • 原文地址:https://www.cnblogs.com/ziv-chan/p/5516156.html
Copyright © 2020-2023  润新知