Python PyQt5-在主窗口小部件外部调用函数
我有两个脚本文件,分别是test_qt.py和test.py。我想在按下按钮时调用一个函数。但此函数不在小部件文件(test_qt)中。如果函数在小部件文件中,我可以很容易地调用它,但是如果我试图在test\u qt之外调用它,我会得到以下错误“AttributeError:'Ui\u Form'对象没有属性'test\u something'”。我查了很多例子,但还没有解决。我想调用test_something()函数。我不知道哪里出错了。我定义了print_something()函数来调用test_something()Python PyQt5-在主窗口小部件外部调用函数,python,qt,widget,pyqt5,qt-designer,Python,Qt,Widget,Pyqt5,Qt Designer,我有两个脚本文件,分别是test_qt.py和test.py。我想在按下按钮时调用一个函数。但此函数不在小部件文件(test_qt)中。如果函数在小部件文件中,我可以很容易地调用它,但是如果我试图在test\u qt之外调用它,我会得到以下错误“AttributeError:'Ui\u Form'对象没有属性'test\u something'”。我查了很多例子,但还没有解决。我想调用test_something()函数。我不知道哪里出错了。我定义了print_something()函数来调用t
在
self.test\u something()
中删除self
应该调用导入的函数
注意:星型导入被视为代码气味,可能会污染名称空间,甚至覆盖现有符号。你应该尽量避免它们:)
test\u有些东西
不是的属性。如果您在test\u qt.py
中执行从test import*
,则test.py
中声明的任何内容(公开)都被视为test\u qt.py
脚本范围内的全局;只要调用test\u 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")
---------------------------