一、简介

wxPython是Python编程语言的一个GUI工具箱。他使得Python程序员能够轻松的创建具有健壮、功能强大的图形用户界面的程序。它是Python语言对流行的wxWidgets跨平台GUI工具库的绑定。而wxWidgets是用C++语言写成的。和Python语言与wxWidgets GUI工具库一样,wxPython是开源软件。这意味着任何人都可以免费地使用它并且可以查看和修改它的源代码,或者贡献补丁,增加功能。wxPython是跨平台的。这意味着同一个程序可以不经修改地在多种平台上运行。现今支持的平台有:32位微软Windows操作系统、大多数Unix或类Unix系统、苹果Mac OS X。由于使用Python作为编程语言,wxPython编写简单、易于理解。

二、基本使用

基本使用的话到这个地址看已经很详细了,我没有必要重复一遍啦:

三、常用控件 1. 菜单(menu) 2. 页面布局(Sizer)

这个东东使用起来比较麻烦,参考以下页面吧: 3. Tab页面(notebook) 4. 列表控件(ListCtrl)

这个控件比较强大,是我比较喜欢使用的控件之一。在《wxPythonInAction》一书中第13章有介绍(想要该书电子版及附带源码的朋友可以问我要)

下面是list_report.py中提供的简单用法:

Code:ListCtrl

对于ListCtrl控件,我要补充的几个地方是:

1. 如何获取选中的项目?

最常用的方法就是获取选中的第一项:GetFirstSelected(),这个函数返回一个int,即ListCtrl中的项(Item)的ID。

还有一个方法是:GetNextSelected(itemid),获取指定的itemid之后的第一个被选中的项,同样也是返回itemid。

通过这两个方法,我们就可以遍历所有选中的项了:

Code : GetNextSelected

如果要获取某一行,某一列的值,则通过下面的方法:

#获取第0行,第1列的值

itemtext = self.list.GetItem(0, 1).Text

2. 如何在选定项后添加右键菜单?

在__init__函数中,添加如下的事件绑定:

self.list.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu)

然后,添加OnContextMenu方法:

OnContextMenu 5. 选择文件对话框(FileDialog)

使用起来非常简单:

FileDialog 6. 选择文件夹对话框(DirDialog)

DirDialog

四、一些技巧 1. 设置快捷键

比如,希望按F5执行某个操作,可以在__init__函数中使用如下方法:

acceltbl = wx.AcceleratorTable([(wx.ACCEL_NORMAL, wx.WXK_F5, self.btnrun.GetId())])

self.SetAcceleratorTable(acceltbl)

还有一种很常用的情况,就是按ESC键关闭窗口。我们知道,有一种非常简单的办法就是使用SetId(wx.ID_CANCEL)方法,如:

self.btncancel = wx.Button(self.panel1, -1, 'Cancel', wx.Point(380, 280))

self.btncancel.SetId(wx.ID_CANCEL)

这样,按ESC键时,将会关闭当前Dialog,注意!这里是说Dialog,即继承自wx.Dialog的窗口对象,对于wx.Frame使用SetId似乎没有效果。 2. 使用定时器timer

在《wxPythonInAction》18章有个例子,如下:

wx.Timer 3. 使用多线程时你必须知道的:wx.CallAfter

在wxpython中编写多线程案例时特别需要注意,线程中通知窗口对象更新状态时,必须使用wx.CallAfter。同样是18章的例子:

wx.CallAfter 4. 需要在程序中启动另外一个GUI程序,而有不失去主窗口的焦点?

通常,我们调用os.popen运行其他外部程序是没有问题的。但是在wxpython中,将会让wx失去当前的焦点,即使得打开的程序成为了一个模式对话框。要解决这个问题可以使用wx自带的方法,wx.Execute。

wx.Execute('notepad')

五、学习资源

wxpython网站_wxpython学习笔记相关推荐

  1. TheBeerHouse 网站项目学习笔记(5)---架构设计

    前述讨论:    TheBeerHouse 网站项目学习笔记(1)----换肤技术                     TheBeerHouse 网站项目学习笔记(2)----个性化管理      ...

  2. wxpython应用程序对象与顶级窗口_wxPython学习笔记(二)

    如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...

  3. 大型网站架构学习笔记

    前言 最近一直在拜读两本书: 1.李智慧老师的<大型网站技术架构 核心原理与案例分析> 2.曾宪杰老师的<大型网站系统与Java中间件实践> 看了并结合自己目前的工作进行了思考 ...

  4. wxPython in Action 学习笔记一

    wxPython 学习笔记 第一章 欢迎使用 wxPython 1. 通常情况下,Python 中的模块导入顺序是随意的,相互无关的. 但是 wxPython 中不同,你从 wxPython 导入其他 ...

  5. python钓鱼网站_学习笔记6.0 Django入门创建一个钓鱼网站

    太久没写博客了,2020年上半年荒废了大部分时光.从现在开始改变吧,学习django开发的知识. 用了两天的时间,终于学会了如何用pycharm开发django,会自己写一个hello world.虽 ...

  6. 毕业设计网站开发学习笔记(一)

    毕业设计是基于C#和HTML5的在线音乐网站设计,下载了visual studio 2017准备开发.这个软件可以写页面也可以开发后台,很方便了. 项目的创建: ASP.NET WEB,visual ...

  7. 个人网站搭建学习笔记

    学习教程:B站UP  康文昌 十分钟学会编程的本质[收藏级]_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1AF411s78P/?spm_id_from ...

  8. 游戏网站开发学习笔记(一)

    已经好久没有更新博客了,现在是寒假时间,在家无聊准备学习JS. 哈哈,很佩服自己.其实也是借助写博客督促自己,希望我能够这个寒假坚持下去.毕竟我也认识到了自己有很多的不足,时间紧迫,只能加油啊. 话不 ...

  9. 游戏网站开发学习笔记(二)

    这两天进度有些慢,一直在忙着看闲书了.赶紧赶上,闲话少说,言归正传. 学习js,我个人认为,重要的是与用户的交互性要强,否则感觉就和单纯的html页面没区别了.针对用户与机器交互内容的不同,页面做出相 ...

  10. wxpython网站_wxpython 实现浏览器

    简洁示例: import wx from wx.html2 import WebView class MyHtmlFrame(wx.Frame): def __init__(self, parent, ...

最新文章

  1. 二胖写参数校验的坎坷之路
  2. EntityFramework之原始查询及性能优化(六)
  3. Jsoncpp Compiler、Programming
  4. 爬虫项目(三)---采集最近一日全国各省疫情数据
  5. 【转】基于XML-RPC的BloggerAPI学习
  6. 《Java 7 并发编程指南》学习概要 (3)Semaphore, CountDownLatch, CyclicBarrier , Phaser, Exchanger...
  7. Cocos2d-X开发中国象棋《三》開始场景的实现
  8. work summery(5)
  9. AcWing 154. 滑动窗口
  10. Ububtu 18.04 安装 mysql 和 phpmyadmin 过程记录
  11. JavaScript制作简易的《飞机大战》
  12. 英语听力学习方法,转自一牛人的博客
  13. 计算机程序员三级试题,计算机程序员考试试题及答案.
  14. python圣诞节_圣诞节,用Python给自己加顶“圣诞帽”
  15. duilib设置透明窗口_Facebook-duilib 仿 半透明登陆窗口, 简单示例程序,模仿 实现 。 DirextX 240万源代码下载- www.pudn.com...
  16. 单自由度振动系统 matlab,单自由度系统的振动及matlab分析
  17. git出现error: invalid object for ‘xxxxx‘
  18. Android从零开始搭建MVVM架构(4,android面试基础题记不住
  19. 传奇从这里诞生--JAVA的N个十
  20. Oracle 闪回特性(FLASHBACK DROP RECYCLEBIN)

热门文章

  1. 3-5-多数组k大值
  2. Jetty报ArrayIndexOutBoundsException:30305的解决方案
  3. Protobuf, understand the hood
  4. 宇瞻筹划转型 标准型内存不再是重头产品
  5. Linux 下DNS服务配置
  6. @RequiredArgsConstructor(onConstructor = @__(@Autowired)) Intellij IDEA如何去掉@Autowired 注入警告的方法
  7. 文件上传—DiskFileItemFactory核心类
  8. Linux C多线程编程
  9. 在社会上闯荡必须要牢记的
  10. 统计系统所有进程总共占用多少内存