PyQt5 TabWidget选项卡BarClicked TypeError:本机Qt信号不可调用 [英] PyQt5 TabWidget tabBarClicked TypeError: native Qt signal is not callable
本文介绍了PyQt5 TabWidget选项卡BarClicked TypeError:本机Qt信号不可调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试用PyQt5制作一个用户界面。如果我单击第5个索引选项卡,则将调用userSettings()函数。但程序引发此错误:
self.tabWidget.tabBarClicked(5).connect(self.userSettings())
TypeError: native Qt signal is not callable
我如何修复它?
import sys
import PyQt5.QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QTabBar, QWidget
from PyQt5.QtWidgets import QMessageBox
from numpy import *
from alfa_gui import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
QMainWindow.__init__(self)
self.setupUi(self)
self.tabWidget.tabBarClicked(5).connect(self.userSettings())
def userSettings(self):
if self.lineEdit.text() == "cogal" and self.lineEdit_2.text() == "cogal":
print("Success!")
else:
msg = QMessageBox()
msg.setWindowTitle("Hatalı Giriş!")
msg.setText("Wrong Password Or Username")
x = msg.exec_()
msg.setIcon(QMessageBox.Critical)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.setWindowTitle('ALFA')
window.show()
exit_code = app.exec_()
sys.exit(exit_code)
推荐答案
代码中有两个问题:
- Signals文档中显示的参数是从它们所连接的函数接收的参数;
- 信号连接需要对可调用对象的引用,而您正在调用所需的函数(带括号),这将在函数返回
None
时引发TypeError;
更改为:
self.tabWidget.tabBarClicked.connect(self.userSettings)
然后:
def userSettings(self, tabIndex):
if tabIndex != 5:
return
# ...
请注意,您应该连接到currentChanged
信号,而不是tabBarClicked
信号,因为即使所单击的选项卡已经是当前选项卡,该信号也会被触发。
这篇关于PyQt5 TabWidget选项卡BarClicked TypeError:本机Qt信号不可调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文