繁体   English   中英

当从另一个脚本调用时,PyQt lineEdit为空

[英]PyQt lineEdit is empty when called from another script

这是我的主稿,它调用了一些生成的UI并定义了一些函数:

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()

这是我从主脚本调用函数的另一个脚本:

...
import mainscript

print("The user input from your other script is: " + mainscript.App().input_user())

我正在尝试使mainscript.App().input_user()不会显示为空(PyQt的默认值)。

编辑

mainscript ,正确的方法取决于mainscript的使用方式。 如果将其用作启动脚本,则最初不会导入该脚本,这将在以后访问全局变量时使事情变得复杂。

更好的方法是拥有一个非常简单的启动脚本,其中仅包含以下内容:

# 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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM