python - PyQt5 - 在主窗口小部件之外调用一个函数
问题描述
我有两个脚本文件test_qt.py和test.py。我想在按下按钮时调用一个函数。但是这个函数不在 Widget 文件中(test_qt)。如果它在 Widget 文件中,我可以轻松调用该函数,但如果我尝试从 test_qt 中调用它,我会收到此错误“ AttributeError: 'Ui_Form' object has no attribute 'test_something' ”。我检查了很多例子,但我还没有解决。我想调用test_something()函数。我不知道错误在哪里。我定义了print_something()函数来调用test_something()
#----test_qt.py----
from PyQt5 import QtCore, QtGui, QtWidgets
from test import*
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(400, 300)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(150, 100, 93, 28))
self.pushButton.setObjectName("pushButton")
self.pushButton.clicked.connect(self.print_something)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.pushButton.setText(_translate("Form", "PushButton"))
def print_something(self):
#strong textprint("click")
self.test_something()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
---------------------------
#---- test.py -------------
def test_something():
print("clicked")
---------------------------
解决方案
删除self
inself.test_something()
应该调用导入的函数。
注意:星型导入被视为代码异味,可能会污染命名空间,甚至会覆盖现有符号。你应该尽量避免它们:)
推荐阅读
- linux - Snort 签名说明
- ios - 将图像加载到 UICollectionView 和缓存问题
- tensorflow - 在这个 tensorflow 神经风格迁移教程中,为什么这个高通滤波器是这样编码的?
- python - pandas中的groupby元素如何基于连续的行值
- python - 我在 python 中的 if -else 程序中遇到编译错误。代码是用 Python 3 编写的,谁能帮助我
- scala - scala中基于包的自动修复目录结构
- java - 未决意图警报管理器不能调用两次
- java - 将捕获的图像转换为位图
- c++ - Objective-C 到 C++ 将二进制文件读入多维浮点数组
- css - 将 CSS 规则应用于多个页面