pyqt5 窗口去除状态栏 调用子窗口时,子窗口退出主窗口也会退出 有没有什么解决办法吗
时间: 2025-01-27 11:07:48 浏览: 36
在使用PyQt5开发应用程序时,你可能会遇到以下两个问题:
1. **去除窗口的状态栏**:
要去除PyQt5窗口的状态栏,你可以使用`Qt.Window`标志来设置窗口标志,从而移除状态栏。
2. **调用子窗口时,子窗口退出主窗口也会退出**:
这个问题通常是因为子窗口设置了父窗口为主窗口,导致子窗口退出时主窗口也被关闭。可以通过设置子窗口为独立窗口来解决这个问题。
以下是一个示例代码,展示了如何去除状态栏以及如何正确调用子窗口而不影响主窗口:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QWidget, QVBoxLayout, QLabel
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("主窗口")
self.setGeometry(100, 100, 400, 300)
self.button = QPushButton("打开子窗口", self)
self.button.clicked.connect(self.open_child_window)
self.button.setGeometry(150, 130, 100, 40)
def open_child_window(self):
self.child = ChildWindow()
self.child.show()
class ChildWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("子窗口")
self.setGeometry(150, 150, 300, 200)
self.layout = QVBoxLayout()
self.label = QLabel("这是一个子窗口", self)
self.layout.addWidget(self.label)
self.setLayout(self.layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个主窗口和一个子窗口。主窗口包含一个按钮,点击按钮可以打开子窗口。通过将子窗口实例化为一个独立的类(`ChildWindow`),并调用`show()`方法显示子窗口,而不是设置父窗口为主窗口,从而避免子窗口退出时主窗口也被关闭。
要移除状态栏,可以在主窗口的`__init__`方法中添加以下代码:
```python
self.setWindowFlags(Qt.Window | Qt.WindowTitleHint | Qt.CustomizeWindowHint)
```
这样,主窗口将不会有状态栏。
阅读全文
相关推荐

















