今天才学到的两个wxPython中的函数:wx.CallAfter和wx.FutureCall。这是两个无关的函数,但又多少有些联系。记得在邮件列表中有人问过:

wxPython中的Frame有没有OnShow之类的事件,因为他想在窗口显示之后执行一些操作。有人回答说使用PostEvent()方法。

这的确是一个方法,不过要自已创建事件(可以使用现成事件),然后把事件与处理窗口进行绑定。这种方法我没有试过。不过现在发现一个更方便的方法wx.CallAfter:

wx.CallAfter(callable, *args, **kwargs)

其实这个方法也是利用PostEvent()来实现的。执行这个方法后,将在主事件循环中加入一个事件,然后通过事件循环进行处理。这其实是一种异步的方法,适用于一个非GUI的处理过程要调用GUI的方法,或子线程调用主线程的方法,或在一个事件处理函数中异步调用另一个事件处理,还有就是上面的问题。这个方法使用很方便,不需要自定义事件,绑定事件,Post事件。

再说一说wx.FutureCall:

wx.FutureCall(milliseconds, callable, *args, **kwargs)

它是从wx.Timer中派生出来的,它的作用是在指定时间之后执行一个方法。

举一个简单的例子,大家可以运行看一下:

import wx

class Frame(wx.Frame):
"""Frame class.""" def __init__(self, parent=None, id=-1, title=’Title’,
pos=wx.DefaultPosition, size=(400, 200)):
"""Create a Frame instance."""
wx.Frame.__init__(self, parent, id, title, pos, size) self.text_id = wx.NewId()
self.text = wx.TextCtrl(self, self.text_id)
self.text.Bind(wx.EVT_RIGHT_UP, self.OnRightClick, id=self.text_id) self.statusbar = self.CreateStatusBar(1, 0) wx.CallAfter(self.call, 1, 'abc', name="ccc", help="test")
wx.FutureCall(5000, self.call, 'call after 100ms', name="test") def OnRightClick(self, event):
wx.MessageBox("message window", "message", wx.OK, self) def call(self, *args, **kwargs):
message = repr(args) + repr(kwargs)
self.SetStatusText(message, 0) class App(wx.App):
"""Application class.""" def OnInit(self):
self.frame = Frame()
self.frame.Show()
self.SetTopWindow(self.frame)
return True def main():
app = App()
app.MainLoop() if __name__ == '__main__':
main()

上面红色的字是重要的。前两行是一个调用的示例,第一行将在Frame创建完毕之后才会被调用。第二行在5秒钟之后被调用。call函数用来在状态条上显示参数信息。

[wxPython学习]wx.CallAfter和wx.FutureCall的更多相关文章

  1. wxPython学习笔记(三)

    要理解事件,我们需要知道哪些术语? 事件(event):在你的应用程序期间发生的事情,它要求有一个响应. 事件对象(event object):在wxPython中,它具体代表一个事件,其中包括了事件 ...

  2. wxPython学习笔记(二)

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

  3. wxPython学习笔记(初识)

    今天正式开始学习wxPython,基于对类的不熟悉,理解有点生硬,但还是做了些笔记. 1.是什么组成了一个wxpython程序? 一个wxpython程序必须有一个application(wx.App ...

  4. wxPython学习笔记

    ------------恢复内容开始------------ 学习wxPython 资料 1.wxpython wiki Getting started with wxPython https://w ...

  5. wxPython学习笔记(一)

    创建最小的空的wxPython程序 frame = wx.Frame(parent=None, title='Bare') frame.Show() return True app = App() a ...

  6. wxPython学习笔记1

    wxpython介绍: wxPython 是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的.功能键全的  GUI 用户界面. wxPython 是作为优 ...

  7. wxpython学习:创建最小的空的wxPython程序

    frame = wx.Frame(parent=None, title=’Bare’) frame.Show() return True app = App() app.MainLoop() 上面的代 ...

  8. [重要更新]微信小程序登录、用户信息相关接口调整:使用 wx.getUserProfile 取代 wx.getUserInfo

    2021年2月24日,微信官方团队发布了一个调整通知:<小程序登录.用户信息相关接口调整说明>,公告明确从4月13日起,所有发布的小程序将无法使用 wx.getUserInfo 接口(JS ...

  9. wxPython学习

    http://www.cnblogs.com/coderzh/archive/2008/11/23/1339310.html 一个简单的实例: #!/usr/bin/python import wx ...

随机推荐

  1. awk速查手册

    简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进 ...

  2. Python基础:输入与输出(I/O)

    来做一个NLP任务 步骤为: 1.读取文件: 2.去除所有标点符号和换行符,并把所有大写变成小写: 3.合并相同的词,统计每个词出现的频率,并按照词频从大到小排序: 4.将结果按行输出到文件 out. ...

  3. Linux 面试的一些基础命令

    1.查询服务器负载 (1)uptime [root@oldboy ~]# uptime 20:17:18 up 7:41, 2 users, load average: 0.00, 0.00, 0.0 ...

  4. Pycharm中F4查看函数的相关小BUG

    我们都知道在Pycharm中我们要快速查看某个函数或者模块的源码,可以在该函数上按F4快捷键,其可以打开源码相关的.py文件,这两天偶然发现起打开的文件不一定是对的. -代码如下: import os ...

  5. Python3爬取起点中文网阅读量信息,解决文字反爬~~~附源代码

    起点中文网,在“数字”上设置了文字反爬,使用了自定义的文字文件ttf通过浏览器的“检查”显示的是“□”,但是可以在网页源代码中找到映射后的数字正则爬的是网页源代码,xpath是默认utf-8解析网页数 ...

  6. 刷表法动态规划:HOJ11391_Word Clouds Revisited

    题目大意,给若干方块,让把方块拍成若干行,使得最终高度最小.其中,每行有宽度限制,高度为每行中最高的箱子的高度. 于是,很直观的认为,这个题可能也许大概应该是个动态规划的题. 于是,设DP[K]为K及 ...

  7. Kali 安装VMtools(最新)

    老方法安装的VMtools不能进行主宿切换,下面是kali最新版安装VMtools的方法 一.换国内源&更新源 参考 Kali 2017更新源 二.安装VMtools apt-get inst ...

  8. 2190: [SDOI2008]仪仗队(欧拉函数)

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 3235  Solved: 2089 Description 作 ...

  9. Android stadio

    Android stadio 最近遇到大问题,就是主功能行.但是让它做库工程,他就不管用. 但是在eclipse里面就可以.

  10. IOS笔记048-数据存储

      IOS数据存储的几种方式         XML属性列表(plist)         归档 Preference(偏好设置)          NSKeyedArchiver归档(NSCodin ...