PyQt4中用partial做槽没反应的问题

发布于 2022-08-26 07:37:02 字数 1585 浏览 14 评论 2

本帖最后由 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

混浊又暗下来 2022-09-03 21:56:37

谢谢楼上的朋友,lambda是有效的。看来问题是出在partial了。python的lambda表达式我还没看到,我这就去学习下,谢谢了!

冷清清 2022-08-26 12:50:59

你把partial换成 lambda试试吧。
比如: lambda : self.anybutton("OK")

要是也不行,那就不是partial的问题了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文