我花了一整天时间调试和剥离我的项目来解决这个问题。
我有一个帮助窗口(Help_ui类),如果找不到text.txt,它应该打开,主窗口(Main类)有一个QTextEdit框,应打印" Hello"。 问题是,当我从Help_ui类调用主窗口时,它不打印" Hello",但如果我从逻辑中调用它,它就会这样做。
为什么要这样做,是否打开了那个窗口的另一个实例,而不是正确的窗口?
from PyQt5 import QtWidgets
import sys
from pathlib import Path
from ui_files import mainWindow
from ui_files import help_ui
text = "Hello"
class Main(QtWidgets.QMainWindow, mainWindow.Ui_mainWindow):
def __init__(self, text):
super().__init__()
self.setupUi(self)
self.mainTextEdit.setText(text)
class Help_ui(QtWidgets.QDialog, help_ui.Ui_help):
def __init__(self):
super().__init__()
self.setupUi(self)
self.close_btn.clicked.connect(self.close)
self.form = Main(None)
self.form.show()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
form = Main(text)
my_file = Path("file.txt")
if my_file.is_file():
form.show()
else:
help_window = Help_ui()
help_window.show()
app.exec_()
答案 0 :(得分:0)
实例form
与实例self.form
不同,在第一个作为参数text
传递,而在第二个None
。< / p>
必须将self.form = Main(None)
更改为self.form = Main(text)