python pyqt5 从主窗口A中弹出子窗口B 同时窗口A可移动 并且点击主窗口A中的按钮能随时改变子窗口B中的标签内容
时间: 2023-04-12 13:01:52 浏览: 121
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
可以使用QDialog来创建子窗口B,使用QMainWindow来创建主窗口A。在主窗口A中,可以使用QPushButton来创建按钮,并使用connect()函数将按钮的clicked信号与一个槽函数连接起来,槽函数中可以使用子窗口B的对象来改变标签内容。同时,可以使用setWindowFlags()函数来设置主窗口A为可移动的。
以下是示例代码:
```
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QPushButton, QLabel
class SubWindow(QDialog):
def __init__(self):
super().__init__()
self.label = QLabel('Sub Window', self)
self.label.move(50, 50)
self.setWindowTitle('Sub Window')
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 300, 200)
self.setWindowTitle('Main Window')
self.sub_window = SubWindow()
self.button = QPushButton('Change Label', self)
self.button.move(50, 100)
self.button.clicked.connect(self.change_label)
self.setWindowFlags(self.windowFlags() | QtCore.Qt.CustomizeWindowHint | QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowMinimizeButtonHint | QtCore.Qt.WindowMaximizeButtonHint | QtCore.Qt.WindowCloseButtonHint)
self.show()
def change_label(self):
self.sub_window.label.setText('Label Changed')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec_())
```
在这个例子中,主窗口A通过setWindowFlags()函数设置为可移动的,并且使用了一些其他的窗口标志来控制窗口的外观和行为。子窗口B通过QDialog来创建,并且包含一个标签。主窗口A中的按钮通过clicked信号连接到一个槽函数,槽函数中使用子窗口B的对象来改变标签内容。
阅读全文