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()))