从另一个脚本调用时,PyQt lineEdit 为空 [英] PyQt lineEdit is empty when called from another script
问题描述
这是我的主脚本,它调用了一些生成的 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 为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!