wxPython 入门开发示例
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 入门开发示例的更多相关文章
- Wxpython入门
Wxpython入门 api文档以及中文教程: https://pan.baidu.com/s/1TDTgHg9Mwc74ODQy68YnlQ 提取码:354n 入门示例 frame=wx.Frame ...
- ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...
- ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑
前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 # ...
- Padrino 博客开发示例
英文版出处:http://www.padrinorb.com/guides/blog-tutorial 楼主按 拿作者自己的话说:Padrino(谐音:派骓诺)是一款基于Sinatra的优雅的Web应 ...
- Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页
前言: 开篇比较简单:Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置 第二篇教程之前写了一半,感觉不太好写,而且内容单纯介绍API,要说的很多,又枯燥乏味. ...
- Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:2、让Kestrel支持绑定多个域名转发,替代Ngnix使用。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
随机推荐
- 文件系统--fs(读)--fs.read
var fs = require('fs');var buf=new Buffer(1024);//fs.open(); //fs.open(path,flags,mode,callback);/* ...
- Python学习笔记第十九周
目录: 一.路由系统URL 1.Django请求生命周期 2.创建Django project 3.配置 4.编写程序 二.视图 三.模板 四.ORM操作 内容: 一.URL 1.Django请求生命 ...
- stack-protector-strong
Improve protection against stack buffer overflows Much like its predecessor, stack-protector, stack- ...
- INS-20802 Oracle Cluster Verification Utility failed解释说明
背景:安装RAC,安装GI集群管理软件时,在最后快结束时,总是报如上INS-错误 #官方文档:error 说明;字符串解析失败 INS-20802: string failed. Cause: The ...
- 检查是否使用PAM认证模块禁止wheel组之外的用户su为root
编辑su文件(vi /etc/pam.d/su),在开头添加下面两行: auth sufficient pam_rootok.so 和 auth required pam_wheel.so group ...
- NYOJ 47:过河问题(思维)
47-过河问题 内存限制:64MB 时间限制:1000ms 特判: No 通过数:6 提交数:10 难度:5 题目描述: 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话 ...
- Thread_run()方法
cas 1: package threadTest; public class ThreadTest { public static void main(String[] args) { Thread ...
- .net core consul grpc--系统服务RPC实现通信(一)
.net core grpc 系统服务实现通信(一) 现在系统都服务化,.net core 实现服务化的方式有很多,我们通过grpc实现客户端.服务端通信. grpc(https://grpc.io/ ...
- 2018.4.23 pip使用
pip打包 python setup.py check 检查setup.py是不是正确,如果正确就只输出running check python setup.py dist 会将项目打包成一个ta ...
- Python学习-终端字体高亮显示1
Python学习-终端字体高亮显示 1.采用原生转义字符序列,对Windows有的版本不支持(比如win7),完美支持Linux 实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显 ...