这是我的主脚本,它调用了一些生成的 UI 并定义了一些函数:
This is my mainscript which calls some generated UI and defines a few functions:
import uifile from PyQt5 import QtWidgets import sys class App(QtWidgets.QMainWindow, uifile.Ui_MyWindow): def __init__(self): super(self.__class__, self).__init__() self.setupUi(self) self.btn_clickMe.clicked.connect(self.some_function) return def some_function(self): import otherpyscript def input_user(self): user = self.lineEdit_username.text() return user def main(): app = QtWidgets.QApplication(sys.argv) form = App() form.show() app.exec_() if __name__ == '__main__': main()这是我从主脚本调用函数的另一个脚本:
This is the other script where I call the function from mainscript:
... import mainscript print("The user input from your other script is: " + mainscript.App().input_user())我试图让 mainscript.App().input_user() 不显示为空(PyQt 的默认设置).
I'm trying to get mainscript.App().input_user() to not show up as empty (the default for PyQt).
推荐答案编辑:
再想一想,正确的方法取决于如何使用 mainscript.如果将其用作启动脚本,则最初不会导入它,这会使稍后访问其全局变量时变得复杂.
On second thoughts, the right approach depends on how mainscript is used. If it is used as the start-up script, it will not be initially imported, which then complicates things when it comes to accessing its globals later on.
更好的方法是有一个非常简单的启动脚本,其中只包含这个:
A better approach is to have a very simple start-up script that only has this in it:
# mainscript if __name__ == '__main__': from mainmodule import main main()mainmodule 看起来像这样:
# mainmodule import sys from PyQt5 import QtWidgets import uifile class App(QtWidgets.QMainWindow, uifile.Ui_MyWindow): def __init__(self): super().__init__() self.setupUi(self) self.btn_clickMe.clicked.connect(self.some_function) def some_function(self): import othermodule othermodule.print_user() def input_user(self): user = self.lineEdit_username.text() return user form = None def main_window(): return form def main(): global form app = QtWidgets.QApplication(sys.argv) form = App() form.show() app.exec_()othermodule 看起来像这样:
# othermodule import mainmodule def print_user(): print("user input: " + mainmodule.main_window().input_user())更多推荐
从另一个脚本调用时,PyQt lineEdit 为空
发布评论