我正在通过制作一个简单的Twitter客户端来练习PyQt和(Q)线程.我有两个Qthreads.
主/ GUI线程.
Twitter获取线程 - 每隔X分钟从Twitter获取数据.
因此,每隔X分钟我的Twitter线程就会下载一组新的状态更新(Python列表).我想将此列表交给Main/GUI线程,以便它可以使用这些状态更新窗口.
我假设我应该使用信号/插槽系统将"状态"Python列表从Twitter线程传输到Main/GUI线程.所以,我的问题是双重的:
如何从Twitter线程发送状态?
如何在Main/GUI线程中收到它们?
据我所知,PyQt默认只能通过信号/插槽发送PyQt对象.我想我应该以某种方式注册一个我可以发送的自定义信号,但我发现的这个文档对于像我这样的新手来说是非常不清楚的.我订购了一本PyQt书,但它不会在另一周到来,我不想等到那时.:-)
我在Ubuntu上使用PyQt 4.6-1
更新:
这是一个不起作用的代码.首先,我尝试将信号("newStatuses",我刚刚编写的名称)"连接"到Main/GUI线程中的函数self.update_tweet_list:
QtCore.QObject.connect(self.twit_in,
QtCore.SIGNAL("newStatuses (statuses)"),
self.update_tweet_list)
Run Code Online (Sandbox Code Playgroud)
然后,在Twitter主题中,我这样做:
self.emit(SIGNAL("newStatuses (statuses)"), statuses)
Run Code Online (Sandbox Code Playgroud)
调用此行时,我收到以下消息:
QObject::connect: Cannot queue arguments of type 'statuses'
(Make sure 'statuses' is registered using qRegisterMetaType().)
Run Code Online (Sandbox Code Playgroud)
我搜索了qRegisterMetaType(),但是我找不到任何与Python有关的东西,我能理解.
我想将数据保存到我的elisp程序中的文件中.我有一个多维列表,我想保存到文件,所以我可以在下次程序运行时恢复它.最简单/最好的方法是什么?
当然,我意识到我可以简单地将数据写入自定义格式的缓冲区然后保存缓冲区,但是当我想要恢复它时,我必须编写一个函数来解析该数据格式.我宁愿不必那样做.
在Python中,有一个Pickle模块,它允许您将对象"转储"到磁盘并非常容易地恢复它们.elisp有类似的东西吗?
我需要为一个工作项目制作一些Python应用程序.目标平台是AIX 5.3.
我的问题是:我应该使用什么版本的Python?
我的要求是:
Python版本必须易于在目标计算机上安装.其他人会根据我写的指示那样做,所以不要从源代码或类似的东西编译.
Python版本必须具有ncurses或curses支持(我正在制作表单处理程序).
我发现了两个不同的预编译版本的Python for AIX,但是一个(2.1.something)不包含curses模块,另一个(2.3.4,RPM格式)具有我未能实现的先决条件).
任何帮助将不胜感激.
我正在为Python 2.6.1中的AIX 5.3创建一个与IMAP服务器连接的程序.我得到一个我不知道如何捕获的异常 - 它似乎没有一个名称,我可以使用"除了".该错误似乎是与服务器连接的某种超时.
堆栈跟踪的最后一部分如下所示:
File "/home/chenf/python-2.6.1/lib/python2.6/imaplib.py", line 890, in _command_complete
raise self.abort('command: %s => %s' % (name, val))
abort: command: SEARCH => socket error: EOF
Run Code Online (Sandbox Code Playgroud)
我只想捕获这个特定的错误,以便我可以在它发生时重新连接到IMAP服务器.捕获此类异常的语法是什么?
我们有一个项目,我们曾经不得不稍微回顾一下 Git 历史并从旧提交开始一个新分支(我们在这里将其称为“new_branch”)。现在,所有的开发都在 new_branch 中进行,在创建分支之后,旧的 Master 就没有用了。所以现在我们有一个看起来像这样的情况:
C1 = Commit 1, C2 = Commit 2, etc.
C1
|
C2
|\
C3 \
| \
... \
| \
Master --> C17 \
\
C18
|
...
|
C37 <-- new_branch
Run Code Online (Sandbox Code Playgroud)
所以我现在想做的是放弃(撤消?)在分支点之后在 Master 中所做的所有提交,即 C3 到 C17。至少,这就是我认为我想做的事情?我的意思是,C3 到 C17 现在没用了,如果我可以撤消它们,那么我可以将 new_branch 合并回 Master,让 Master 再次有用。
所以我的问题是,这是实现我能够再次使用 Master 的目标的正确方法吗?我应该使用哪个命令(我在 Linux 的命令行中使用 Git)来撤消 C3 到 C17 的提交?这是一个工作项目,所以我把它做好是非常重要的。