首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PyQt中创建和使用用户定义的插槽

在PyQt中创建和使用用户定义的插槽
EN

Stack Overflow用户
提问于 2013-01-28 01:44:07
回答 1查看 178关注 0票数 1
代码语言:javascript
运行
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QMainWindow):
    def __init__(self):
        super(Example, self).__init__();
        self.initUI()


    def initUI(self):
        field = QtGui.QLineEdit("", self)
        field.resize(field.sizeHint())
        field.move(150, 100)

        submit_button = QtGui.QPushButton("Fill hello world", self)
        submit_button.resize(submit_button.sizeHint())
        submit_button.move(50,300)
        submit_button.clicked.connect(self.modify(field))


    def modify(self, field):
        field.setText("hello")

def main():    #!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QMainWindow):
    def __init__(self):
        super(Example, self).__init__();
        self.initUI()


    def initUI(self):
        field = QtGui.QLineEdit("", self)
        field.resize(field.sizeHint())
        field.move(150, 100)

        submit_button = QtGui.QPushButton("Fill hello world", self)
        submit_button.resize(submit_button.sizeHint())
        submit_button.move(50,300)
        submit_button.clicked.connect(self.modify(field))


    def modify(self, field):
        field.setText("hello")


def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

if __name__=='__main__':
    main()

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

if __name__=='__main__':
    main()

好的。所以这里是我想要的do.Whenever的sumbit按钮被点击,我希望这个字段是由'hello world‘填充的。这意味着将提交按钮连接到用户定义的插槽。如何将字段传递给modify()函数,在该函数中可以修改其文本?

目前,代码给出错误:

代码语言:javascript
运行
复制
     File "test.py", line 21, in initUI
    submit_button.clicked.connect(self.modify(field))
TypeError: connect() slot argument should be a callable or a signal, not 'NoneType'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-28 05:51:22

首先,您从connect()获得错误消息,因为您传递的不是一个函数作为参数,而是函数调用的结果,即None。这一行应该写成:

代码语言:javascript
运行
复制
submit_button.clicked.connect(self.modify)

然后,应该更改modify函数,以知道要填充哪个字段。要实现这一点,一种方法是将字段保存在类变量中,并在其前面加上self.

代码语言:javascript
运行
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QMainWindow):
    def __init__(self):
        super(Example, self).__init__();
        self.initUI()


    def initUI(self):
        self.field = QtGui.QLineEdit("", self)
        self.field.resize(self.field.sizeHint())
        self.field.move(150, 100)

        submit_button = QtGui.QPushButton("Fill hello world", self)
        submit_button.resize(submit_button.sizeHint())
        submit_button.move(50,300)
        submit_button.clicked.connect(self.modify)


    def modify(self):
        self.field.setText("hello")


def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

if __name__=='__main__':
    main()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14550191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档