Python 为什么子对话框可以';使用setWindowFlags后是否显示?

Python 为什么子对话框可以';使用setWindowFlags后是否显示?,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我想删除右上角显示有关对话框帮助的标志** 因此,我编写了以下代码: 从PyQt5.qtwidts导入QWidget、QDialog、QApplication、QVBoxLayout 从PyQt5.QtWidgets导入QPushButton 从PyQt5.QtCore导入Qt 类ChildWidget(QDialog): def uuu init uuu(self,parent=None): super()。\uuuu init\uuuu(父级) 自我调整大小(500500) self.set

我想删除右上角显示有关对话框帮助的标志** 因此,我编写了以下代码:

从PyQt5.qtwidts导入QWidget、QDialog、QApplication、QVBoxLayout
从PyQt5.QtWidgets导入QPushButton
从PyQt5.QtCore导入Qt
类ChildWidget(QDialog):
def uuu init uuu(self,parent=None):
super()。\uuuu init\uuuu(父级)
自我调整大小(500500)
self.setWindowTitle('Child'))
self.setWindowFlags(Qt.customizeWindowint | Qt.WindowCloseButtonHint)
类ParentWidget(QWidget):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.initUI()
def initUI(self):
自我调整大小(600600)
self.setWindowTitle(“父项”)
self.btn=QPushButton('show childDialog')
self.child\u widget=ChildWidget(self)
layout=QVBoxLayout()
layout.addWidget(self.btn)
self.setLayout(布局)
self.btn.clicked.connect(self.onClickedBtn)
def onClickedBtn(自身):
self.child_widget.show()
如果“名称”=“\uuuuuuuu主要”:
导入系统
app=QApplication(sys.argv)
w=ParentWidget()
w、 show()
sys.exit(app.exec_())
单击按钮时无法显示子对话框


您能告诉我原因吗?

作为窗口的小部件必须至少满足以下特征之一:

  • 没有父母,或者
  • 启用Qt::Window标志,或
  • 启用Qt::Dialog标志,或
  • 启用Qt::Tool标志
在您的情况下,您不知道为什么它不是窗口而是小部件的一部分。最好的解决方案是启用Qt::Dialog标志:

class ChildWidget(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.resize(500, 500)
        self.setWindowTitle("Child")
        self.setWindowFlags(
            Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint
        )
class-ChildWidget(QDialog):
def uuu init uuu(self,parent=None):
super()。\uuuu init\uuuu(父级)
自我调整大小(500500)
self.setWindowTitle(“子项”)
self.setWindowFlags(
Qt.Dialog | Qt.CustomizeWindowint | Qt.WindowCloseButtonHint

)
self.child\u widget=ChildWidget(self)
更改为
self.child\u widget=ChildWidget()
或添加标志
Qt.Window
衷心感谢您的回答。这对我很有帮助。