6

如何使此窗口无边框(删除最小化/最大化/关闭)?

在此处输入图像描述

  1 import sys
  2 from PyQt4 import QtCore, QtGui
  3 from qt import Ui_MainWindow
  4 
  5 class StartQT4(QtGui.QMainWindow):
  6     def __init__(self, parent=None):
  7         QtGui.QWidget.__init__(self, parent)
  8         self.ui = Ui_MainWindow()
  9         self.ui.setupUi(self))
 10         
 11 if __name__ == "__main__":
 12     app = QtGui.QApplication(sys.argv)
 13     myapp = StartQT4()
 14     myapp.show()
 15     app.setWindowFlags(app.FramelessWindowHint) <<< does not working
 16     sys.exit(app.exec_())
 17     
4

2 回答 2

10

show您需要在调用主窗口之前设置窗口标志。

一个最小的工作示例如下所示:

import sys
from PyQt4 import QtCore, QtGui

class StartQT4(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(StartQT4, self).__init__(parent)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.b = QtGui.QPushButton("exit", self, clicked=self.close)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = StartQT4()
    myapp.show()
    sys.exit(app.exec_())
于 2012-05-29T11:16:51.140 回答
4

一些窗口标志需要在构造函数中设置为QMainWindow,我怀疑这是一个。有关详细信息,请参阅QMainWindow 的文档

请注意,您STartQT4.__init__调用了错误的构造函数。你应该打电话QMainWindow.__init__,而不是QWidget.__init__

super(StartQT4,self).__init__(parent, <windowflags>)改为使用

于 2012-05-29T11:11:30.030 回答