1、背景资料

wxPython API:https://www.wxpython.org/Phoenix/docs/html/

2、入门示例

wxPython最重要的两个概念:App与Frame,其中App只有一个,Frame可以是多个。参见下面代码:

import wx
from frame_main import FrameMain class MainApp(wx.App):
def __init__(self):
wx.App.__init__(self)
self.frame = None # 这里声明一下self变量可以避免警告 def OnInit(self):
self.frame = FrameMain(None)
self.frame.Show(True)
return True # 返回False程序将会立即退出 def OnExit(self):
self.frame = None # 非必要,只是为了用一下self
return 0 # 返回状态码 if __name__ == '__main__':
app = MainApp()
app.MainLoop()

Frame的设计也比较简单,涉及到多种控件的使用可以专门的研究下,我看表格控件是比较复杂一点的,不过比起C++还是简单很多。

import wx

class FrameMain(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, id=-1, title="Hello World", size=(300, 400)) # 设置窗体 # 状态栏
bar = self.CreateStatusBar()
self.SetStatusBar(bar) """
panel和sizer是wxpython提供的窗口部件。是容器部件,可以用于存放其他窗口部件
"""
panel = wx.Panel(self)
# sizer = wx.BoxSizer(wx.VERTICAL)
sizer = wx.GridSizer(rows=3, cols=3, vgap=5, hgap=5) # vgap hgap代表水平距离和垂直距离
panel.SetSizer(sizer) # 创建文本输入框
input_text = wx.TextCtrl(panel, -1, "", pos=(10, 10), size=(150, -1))
input_text.SetInsertionPoint(1) # 设置焦点
# sizer.Add(input_text) # 创建静态文本组件
txt = wx.StaticText(panel, -1, "Hello World!", pos=(10, 50), size=(160, 25), style=wx.ALIGN_CENTER)
txt.SetForegroundColour("blue")
txt.SetBackgroundColour("green")
font = wx.Font(12, wx.DEFAULT, wx.ITALIC, wx.NORMAL, True) # ITALIC倾斜
txt.SetFont(font)
# sizer.Add(txt) # 按钮
btn = wx.Button(panel, -1, "Click", pos=(10, 90), size=(80, 30))
# sizer.Add(btn, 0, wx.TOP | wx.LEFT, 50)
btn.Bind(wx.EVT_BUTTON, self.OnClick)
btn.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter)
btn.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter2)
btn.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeave)
# sizer.Add(btn) # 列表控件
color_list = ["红", "绿", "蓝", "白", "紫"]
self.listBox = wx.ListBox(panel, -1, pos=(10, 130), size=(80, 110), choices=color_list, style=wx.LB_SINGLE)
self.listBox.SetSelection(2)
self.Bind(wx.EVT_LISTBOX, self.OnClickList, self.listBox)
# sizer.Add(self.listBox) # 表格控件
# self.Center() # 将窗口放在桌面环境的中间 def OnClickList(self, event):
index = self.listBox.GetSelection()
wx.MessageBox(self.listBox.GetString(index), "提示") def OnClick(self, event):
# dialog = wx.Dialog(None, title="Hi, Clicked!", size=(300, 200))
# dialog.Show()
#self.Close(True) dialog = wx.TextEntryDialog(None, message="请输入文件名:", caption="文件", value="test")
res = dialog.ShowModal()
print res def OnMouseEnter(self, event):
print "Mouse enter" def OnMouseEnter2(self, event):
print "Mouse enter2"
event.Skip() # 后注册的事件响应函数会覆盖之前的,默认仅执行一个,如需继续则调用Skip def OnMouseLeave(self, event):
print "Mouse leave"

直接看下效果就知道基本框架怎么用了:

wxPython 入门开发示例的更多相关文章

  1. Wxpython入门

    Wxpython入门 api文档以及中文教程: https://pan.baidu.com/s/1TDTgHg9Mwc74ODQy68YnlQ 提取码:354n 入门示例 frame=wx.Frame ...

  2. ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)

    前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...

  3. ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑

    前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 # ...

  4. Padrino 博客开发示例

    英文版出处:http://www.padrinorb.com/guides/blog-tutorial 楼主按 拿作者自己的话说:Padrino(谐音:派骓诺)是一款基于Sinatra的优雅的Web应 ...

  5. Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页

    前言: 开篇比较简单:Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置 第二篇教程之前写了一半,感觉不太好写,而且内容单纯介绍API,要说的很多,又枯燥乏味. ...

  6. Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  7. Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  8. Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  9. Taurus.MVC 微服务框架 入门开发教程:项目部署:2、让Kestrel支持绑定多个域名转发,替代Ngnix使用。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

随机推荐

  1. Python3中的运算符

    一.Python3中的运算符 强调这是Python3中的运算符 +    加法 -     减法 *     乘法 /     除法 //    整除,只要整数部分 **   幂运算 %   取余数 ...

  2. Cocos2dx 中的点击事件

    简单记录一下2dx的鼠标交互事件.以及精灵绑定盒的点击判定   Layer 子类的 init方法中:   auto listener = EventListenerTouchOneByOne::cre ...

  3. HihoCoder - 1807:好的数字串 (KMP DP)

    Sample Input 6 1212 Sample Output 298 给定一个数字字符串S,如果一个数字字符串(只包含0-9,可以有前导0)中出现且只出现1次S,我们就称这个字符串是好的. 例如 ...

  4. ccf-170904-通信网络

    ccf-170904-通信网络 题目分析: 有向图 如果a可以直接或者间接连接b则a与b相互知晓 一共有多少个点知道n个点 刚开始算错复杂度,优化后反而超时 ...事实无脑爆搜这道题也是可取的因为只有 ...

  5. vue elementui 写的一个后台管理页面模板

    https://github.com/PanJiaChen/vue-element-admin

  6. 浅谈malloc()和free()工作原理

    编程之路刚刚开始,错误难免,希望大家能够指出.  malloc()和free()是我经常需要用到的函数,一般情况下,C程序使用malloc()在堆上分配内存,free()释放内存,两者的参数和返回值就 ...

  7. Go Example--闭包

    package main import "fmt" func main() { //这里需要将闭包函数当作一个类理解,这里是实例化 nextInt := intSeq() fmt. ...

  8. 【BZOJ2229】【ZJOI2011】最小割

    冷门知识点…… 原题: 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中 ...

  9. 【mybatis源码学习】利用maven插件自动生成mybatis代码

    [一]在要生成代码的项目模块的pom.xml文件中添加maven插件 <!--mybatis代码生成器--> <plugin> <groupId>org.mybat ...

  10. 100 webhook implementations

    转自: https://streamdata.io/blog/100-webhook-implementations/  很不错的整理 What is the scope of the event-d ...