[英]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.