我是PyQt的新手,但我有一个无法解决的问题。我试图从第二个窗口获取文本并将其设置为字段,所以当我关闭第二个窗口时,我可以从第一个主窗口打印文本,但我的“另一个窗口”按钮不会触发事件,我真的不知道为什么?这是代码。有人能指引我吗? 谢谢
class AnotherWindow(QMainWindow):
def __init__(self):
super().__init__()
self.resize(1200, 600)
self.text = "basetext"
self.layoutf = QFormLayout()
self.buttonf = QPushButton("get text")
self.buttonf.clicked.connect(lambda: self.getText)
self.line = QLineEdit()
self.layoutf.addRow(self.buttonf,self.line)
self.widgetf = QWidget()
self.widgetf.setLayout(self.layoutf)
self.setCentralWidget(self.widgetf)
def getText(self):
print(self.line.text)
self.text = self.line.text
self.close()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.w = None # No external window yet.
self.mainLayout = QGridLayout()
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.addWidget(self.button,0,0)
self.mainLayout.addWidget(self.button1, 0, 1)
self.widget = QWidget()
self.widget.setLayout(self.mainLayout)
self.setCentralWidget(self.widget)
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)
app = QApplication(sys.argv)
w = MainWindow()
w.show()
app.exec_()
self.w = AnotherWindow (self)
self.w = AnotherWindow (self)
-self
作为父窗口传递,这样当主窗口关闭时,第二个窗口也会关闭李>QString text() const
,更多https://doc.qt.io/qt-5/qlineedit.html#text-propprintFromSecondWindow
,据我所知,在该方法中,您希望显示您想要显示的内容李>试试看:
问题在于
self.buttonf.clicked.connect(...)
。此调用将函数附加到按钮上的“单击”操作。调用函数时不带参数,返回值被简单地丢弃。在您的例子中,lambda: self.get_text
是一个只返回self.get_text
方法地址的函数。因为get_text
不需要任何额外的参数,所以可以将它直接绑定到此插槽稍后还出现了一个bug,需要调用text方法。有了这两个变化,工作程序就完成了
相关问题 更多 >
编程相关推荐