Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何返回Pyqt5中的值?_Python_Pyqt5 - Fatal编程技术网

Python 如何返回Pyqt5中的值?

Python 如何返回Pyqt5中的值?,python,pyqt5,Python,Pyqt5,我希望用户在lineEdit_0中输入一个值,然后在文本浏览器中打印该值。但是我发现了下面的错误。我能知道怎么解决吗 printf()接受2个位置参数,但给出了3个 class MainWindow(QtWidgets.QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(s

我希望用户在
lineEdit_0
中输入一个值,然后在文本浏览器中打印该值。但是我发现了下面的错误。我能知道怎么解决吗

printf()接受2个位置参数,但给出了3个

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        #MainWindow Title
        self.setWindowTitle("Pandora Box")

        #Set Window Icon
        self.setWindowIcon(QtGui.QIcon(r''))

        # Background Palette
        palette = QtGui.QPalette()
        palette.setBrush(self.backgroundRole(), QtGui.QColor(70,70,70))
        self.setPalette(palette)

        #StatusBar
        self.statusBar().showMessage("Coming Soon")

            # Text Browser
            self.tb = self.ui.textBrowser
            self.tb.setAcceptRichText(True)
            self.tb.setOpenExternalLinks(True)
    
            #Click Button Effect
            self.ui.pushButton.setText('Display')
            text = self.ui.lineEdit_0.text() #Error 
    
            self.ui.pushButton.clicked.connect(self.printf(self, text)) #Error
    
    
        def printf(self, mes):
            self.tb.append(mes)  
            self.cursot = self.tb.textCursor()
            self.tb.moveCursor(self.cursot.End)
    
    
    
    if __name__ == '__main__':
        app = QtWidgets.QApplication([])
        mainWindow = MainWindow()
        mainWindow.show()
        sys.exit(app.exec())

当创建信号连接时,
connect()
的参数必须是对可调用函数的引用

这意味着,如果函数应作为
self.printf()
执行,则连接必须在没有括号的情况下完成:

        self.ui.pushButton.clicked.connect(self.printf)
请注意,您尝试在连接中添加文本参数是错误的,这不仅是因为上述原因,还因为您可能希望在调用函数时使用行编辑的文本,但是
text=self.ui.lineEdit_0.text()
只会在您尝试连接时提供文本(这可能是一个空字符串)。此外,您在函数中添加了一个
self
参数,这显然是错误的

问题是
printf
函数需要一个与
单击的
信号参数(这是一个布尔值)不兼容的参数,并且您还希望根据行编辑内容为该参数使用动态值

因此,你要么完全避免争论:

        self.ui.pushButton.clicked.connect(self.printf)
        # ...

    def printf(self):
        mes = self.ui.lineEdit_0.text()
        self.tb.append(mes)
        # ...

这里不需要给self赋值:
self.ui.putton.clicked.connect(self.printf(self,text))#错误
尝试使用
self.ui.putton.clicked.connect(self.printf(text))
它会弹出另一个错误“参数1具有意外类型‘NoneType’”好的,你能给我Ui_MainWindow类,这样我就可以重新创建代码并运行它。请检查文本变量不是无type@crackanddieui不重要,原因很简单:信号连接需要一个对可调用对象的引用。
        self.ui.pushButton.clicked.connect(lambda: self.printf(self.ui.lineEdit_0.text()))