pyside6怎么实现点击一个按钮后弹出一个二级窗口,并且这个二级窗口中的改动会被保存
时间: 2024-05-08 19:16:30 浏览: 182
可以使用QDialog类来创建一个二级窗口,并使用信号和槽来实现保存功能。
以下是一个示例代码:
```
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QDialog, QLabel, QVBoxLayout
class SubWindow(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("Sub Window")
layout = QVBoxLayout()
self.label = QLabel("Initial text")
layout.addWidget(self.label)
button = QPushButton("Save")
button.clicked.connect(self.save_text)
layout.addWidget(button)
self.setLayout(layout)
def save_text(self):
# Save the text and close the window
text = self.label.text()
print("Saving text:", text)
self.accept()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Main Window")
button = QPushButton("Open Sub Window")
button.clicked.connect(self.open_sub_window)
self.setCentralWidget(button)
def open_sub_window(self):
sub_window = SubWindow(self)
sub_window.label.setText("Modified text")
if sub_window.exec_() == QDialog.Accepted:
print("Sub window closed and changes saved")
else:
print("Sub window closed without saving changes")
if __name__ == "__main__":
app = QApplication()
window = MainWindow()
window.show()
app.exec_()
```
在这个例子中,SubWindow类继承自QDialog,它包含一个标签和一个保存按钮。标签的文本可以在打开窗口时修改。保存按钮的clicked信号连接到save_text槽函数,当用户点击保存按钮时,该函数将打印标签的文本并关闭窗口。
MainWindow类继承自QMainWindow,它包含一个按钮,点击该按钮将打开SubWindow。当SubWindow关闭时,MainWindow将打印出是否保存了更改。
在open_sub_window函数中,我们创建了SubWindow实例,并将其父级设置为MainWindow。然后我们修改标签的文本。最后,我们使用exec_函数来显示SubWindow,并等待用户关闭窗口。如果用户点击保存按钮,SubWindow将返回QDialog.Accepted,否则将返回QDialog.Rejected。根据返回值,我们可以确定是否保存了更改。
阅读全文