我可以让我的程序在点击按钮时更改状态栏文本。我一直在
&p; self.closeButton.clicked.connect(self.process(' text'))'上的 "TypeError: argument 1 has unexpected type 'NoneType'"
错误。
我不知道该怎么做
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit,
QPushButton
from PyQt5.QtGui import QIcon
class App(QMainWindow):
def process(self):
self.statusBar.showMessage('online')
def __init__(self):
super().__init__()
self.title = 'Red Queen v0.4'
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.statusBar().showMessage('Offline')
self.showMaximized()
self.setStyleSheet("background-color: #FFFFFF;")
self.textbox = QLineEdit(self)
self.textbox.move(500, 300)
self.textbox.resize(350, 20)
self.textbox.setStyleSheet("border: 3px solid red;")
self.setWindowIcon(QIcon('Samaritan.png'))
text = QLineEdit.text(self.textbox)
self.closeButton = QPushButton('process', self)
self.closeButton.clicked.connect(self.process('text'))
self.closeButton.show()
self.show()
self.textbox.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
答案 0 :(得分:2)
更改行:
self.closeButton.clicked.connect(self.process('text'))
要
self.closeButton.clicked.connect(self.process)
您需要将函数本身作为参数传递,而不是函数调用的结果(因为您的方法不包含return语句,self.process()
返回None
)。
如果您希望process
方法接受参数,则必须先按照Avión的建议进行更改:
def process(self, text):
self.statusBar.showMessage(text)
但是将连接到点击信号的线路更改为:
self.closeButton.clicked.connect(lambda: self.process('offline'))
需要lambda表达式将可调用对象传递给connect()。
答案 1 :(得分:1)
将process
功能更改为:
def process(self, text):
self.statusBar.showMessage(text)
现在你打电话给这个功能
self.closeButton.clicked.connect(self.process('text'))
它将获取文本并打印出来。