单击按钮更改Pyqt状态栏文本

时间:2017-08-03 13:26:25

标签: python pyqt

我可以让我的程序在点击按钮时更改状态栏文本。我一直在

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

2 个答案:

答案 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'))它将获取文本并打印出来。