<ol>
<li>在主窗口构造函数中实例化第二个窗口一次<code>self.w = AnotherWindow (self)</code></li>
<li>当创建第二个窗口的实例时,<code>self.w = AnotherWindow (self)</code>-<code>self</code>作为父窗口传递,这样当主窗口关闭时,第二个窗口也会关闭</李>
<li>要从QLineEdit小部件获取文本,请使用<code>QString text() const</code>,更多<a href="https://doc.qt.io/qt-5/qlineedit.html#text-prop" rel="nofollow noreferrer">https://doc.qt.io/qt-5/qlineedit.html#text-prop</a></li>
<li>您没有显示方法<code>printFromSecondWindow</code>,据我所知,在该方法中,您希望显示您想要显示的内容</李>
</ol>
<p>试试看:</p>
<pre><code>import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.Qt import *
class AnotherWindow(QMainWindow):
def __init__(self, parent=None):
super(AnotherWindow, self).__init__(parent)
self.widgetf = QWidget()
self.setCentralWidget(self.widgetf)
# self.resize(1200, 600)
self.text = "basetext"
self.layoutf = QFormLayout(self.widgetf)
self.buttonf = QPushButton("get text")
# self.buttonf.clicked.connect(lambda: self.getText) # ??? lambda
self.buttonf.clicked.connect(self.getText)
self.line = QLineEdit()
self.layoutf.addRow(self.buttonf,self.line)
def getText(self):
print(self.line.text()) # ! .text()
self.text = self.line.text() # ! .text()
self.close()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.widget = QWidget()
self.setCentralWidget(self.widget)
# ? self.w = None # No external window yet.
self.button = QPushButton("Push for Window")
self.button.clicked.connect(self.show_new_window)
self.button1 = QPushButton("Push ")
self.button1.clicked.connect(self.printFromSecondWindow)
self.mainLayout = QGridLayout(self.widget)
self.mainLayout.addWidget(self.button, 0, 0)
self.mainLayout.addWidget(self.button1, 0, 1)
self.w = AnotherWindow(self) # +++
def show_new_window(self):
# if self.w is None:
# self.w = AnotherWindow()
self.w.show() # !
# else:
# self.w.close() # Close window.
# self.w = None # Discard reference.
def printFromSecondWindow(self): # +++
print(self.w.text)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
</code></pre>
<p><a href="https://i.stack.imgur.com/CKsLW.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/CKsLW.png" alt="enter image description here"/></a></p>
<p><a href="https://i.stack.imgur.com/14L9R.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/14L9R.png" alt="enter image description here"/></a></p>