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. Android SO动态调试之IDA

    1.上传并启动android_server(IDA的dbgsrv目录) 2.设置端口转发:adb forward tcp:23946 tcp:23946 3.调试模式启动应用:adb shell am ...

  2. How did I Install DCGAN

    https://github.com/carpedm20/DCGAN-tensorflow how to install pillow(python image library) http://www ...

  3. render finished

  4. 论container的前世今生

    why Normally, thin-client multitiered applications are hard to write because they involve many lines ...

  5. 数据类型int、float、str、list、dict、set定义及常用方法汇总

    数据类型int:记录整数事物状态 可变不可变:值不可变类型,改变变量值实则是改变了变量的指向 int():功能:1.工厂函数, i = 5 <==> i = int(5) 2.强制类型转换 ...

  6. spring管理

    spring管理 SqlMapConfig.xml: <?xml version="1.0" encoding="UTF-8"?> <bean ...

  7. codeforces 788A Functions again

    …… 原题: Something happened in Uzhlyandia again... There are riots on the streets... Famous Uzhlyandia ...

  8. HttpClient-传入url得到json字符串( PostMethod method = new PostMethod(url)是个好方法)

    import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ...

  9. IO流的序列化和反序列化

    序列化和反序列化的概念: 序列化:把对象转换为字节序列的过程称为对象的序列化.(常见的就是存文件) 反序列化:把字节序列恢复为对象的过程称为对象阿德反序列化. 序列化和反序列化的使用: java.io ...

  10. Tanks!Tutorial 学习

    using UnityEngine; namespace Complete { public class CameraControl : MonoBehaviour { /// <summary ...