pyqt子窗口和父窗口同时浮在桌面
时间: 2023-07-05 15:03:51 浏览: 71
可以使用 Qt 的 `setWindowFlags` 方法来设置窗口的标志位,从而实现子窗口和父窗口同时浮在桌面的效果。
下面是一个示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QDialog
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('主窗口')
self.setGeometry(100, 100, 300, 200)
self.button = QPushButton('打开子窗口', self)
self.button.clicked.connect(self.open_dialog)
self.show()
def open_dialog(self):
dialog = QDialog(self)
dialog.setWindowTitle('子窗口')
dialog.setGeometry(200, 200, 200, 100)
dialog.setWindowFlags(dialog.windowFlags() | Qt.WindowStaysOnTopHint)
dialog.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
mw = MainWindow()
sys.exit(app.exec_())
```
在上面的代码中,我们创建了一个主窗口 `MainWindow`,并在其中添加了一个按钮 `button`。当用户点击按钮时,会打开一个子窗口 `dialog`。在打开子窗口时,我们通过 `setWindowFlags` 方法将子窗口的标志位设置为 `Qt.WindowStaysOnTopHint`,从而使其浮在桌面的最上层。
注意,在设置标志位时,我们使用了 `|` 运算符,这意味着我们将原有的标志位与新的标志位进行了“或”运算,从而得到了新的标志位。如果我们不进行“或”运算,而直接设置新的标志位,那么原有的标志位将被替换掉,可能会影响窗口的其他属性。