python pyqt5 从主窗口A中弹出子窗口B 同时窗口A可移动 并且点击主窗口A中的按钮B能打开窗口B,点击主窗口A中的按钮C能随时改变子窗口B中的标签内容
时间: 2023-04-12 09:01:54 浏览: 219
PyQt5实现从主窗口打开子窗口的方法
可以使用QDialog来实现弹出子窗口B,同时在主窗口A中设置按钮B和按钮C的信号槽函数来实现打开子窗口B和改变标签内容的功能。以下是示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QLabel, QPushButton
class SubWindow(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle('Sub Window')
self.setGeometry(100, 100, 200, 100)
self.label = QLabel('Hello World!', self)
self.label.move(50, 20)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Main Window')
self.setGeometry(100, 100, 300, 200)
self.sub_window = SubWindow()
self.btn_b = QPushButton('Open Sub Window', self)
self.btn_b.move(50, 50)
self.btn_b.clicked.connect(self.open_sub_window)
self.btn_c = QPushButton('Change Label', self)
self.btn_c.move(150, 50)
self.btn_c.clicked.connect(self.change_label)
def open_sub_window(self):
self.sub_window.show()
def change_label(self):
self.sub_window.label.setText('New Label')
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个主窗口MainWindow和一个子窗口SubWindow,子窗口中包含一个标签label,主窗口中包含两个按钮btn_b和btn_c。当点击btn_b时,会弹出子窗口SubWindow;当点击btn_c时,会将子窗口SubWindow中的标签label的文本改为'New Label'。
阅读全文