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. Unity调用Window提示框Yes/No(英文提示窗)

    Unity调用Windows弹提示框 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  2. Unity 灯光探针用法教程

    Unity 灯光探针用详解 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

  3. CodeForces - 1101G :(Zero XOR Subset)-less(线性基)

    You are given an array a1,a2,…,an of integer numbers. Your task is to divide the array into the maxi ...

  4. JavaScript 如何断平台

    isMobile = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgen ...

  5. (8)Python连接操作MySQL

    pymysql模块下的方法 '''必须实例化对象才能建立连接''' 1.pymysql.connect  #和MySQL建立连接 '''得由对象去调用定义游标''' 2.xxx.sursor()  # ...

  6. 实验吧—隐写术——WP之 我喜欢培根

    打开解题链接: 有一点点基础的同学大概都知道这是摩尔斯电码,那么我们对他进行解密: 解密后得到: MORSEnullISnullCOOLnullBUTnullBACONnullISnullCOOLER ...

  7. <--------------------------Java接口如何使用------------------------------>

    关键词:interface --->接口      implements--->实现 1接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应 ...

  8. Spring事务管理机制的实现原理-动态代理

    之前在做项目中遇到spring无法进行事务代理问题,最后发现是因为没有写接口,原因当时明白了,看到这篇文章写的清楚些,转过来 我们先来分析一下Spring事务管理机制的实现原理.由于Spring内置A ...

  9. JavaScript Constructor & prototype

    阮一峰 JavaScript OOD 三部曲: 封装 JS 是一种基于对象(object-based)的语言. 但是JS不是一种真正的OOP语言, 因为语法中没有class. 以下就是简单的封装. 把 ...

  10. 爱今天 APP 闪退怎么办?

    爱今天 APP 闪退怎么办? 爱今天是一款简洁优秀的时间记录 APP. 但也有一些小 Bug,可能是因为不同的手机兼容问题,在添加时间时会出现闪退现象. 可能是因为自己修改了添加时间的方式. 可以通过 ...