PyQt4中用partial做槽没反应的问题
本帖最后由 zhuyubei 于 2010-02-11 10:09 编辑
各位朋友,我最近在学习PyQt4.看得是网上的一本电子书《Rapid Gui Programming with Python and Qt》
该书第133页上用partial函数实现对同一个槽函数传递不同参数的方法。书中说python2.5是可以运行通过。而我的python是2.5.1。但是我照着书中尝试下来,信号和槽的连接似乎没反应。想问下各位有解决的方法吗
代码如下:
import sys
from functools import partial; #引入partial函数
from PyQt4.QtCore import *;
from PyQt4.QtGui import *;
class MyDialog(QDialog):
def __init__(self,parent=None):
super(MyDialog,self).__init__(parent);
self.label = QLabel("Change me now!");
self.button = QPushButton("Clieck me");
layout = QHBoxLayout();
layout.addWidget(self.label);
layout.addWidget(self.button);
self.setLayout(layout);
#这里把点击按钮和anyButton连接,参数是ok,和书中的方法一样
self.connect(self.button,SIGNAL("clicked()"),partial(self.anyButton,"ok"));
#槽函数,改变label的值
def anyButton(self,who):
self.label.setText("It's %s" % who);
app = QApplication(sys.argv);
dlg = MyDialog();
dlg.show();
app.exec_();
运行结果是点击按钮,标签不会改变,没有任何反应,估计是partial的问题。Qt的版本是4.4.3。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
谢谢楼上的朋友,lambda是有效的。看来问题是出在partial了。python的lambda表达式我还没看到,我这就去学习下,谢谢了!
你把partial换成 lambda试试吧。
比如: lambda : self.anybutton("OK")
要是也不行,那就不是partial的问题了。