簡體   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