By
Moky
Updated:
Contents
【转】原创作品,允许转载。转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。
http://www.cnblogs.com/caomingongli/archive/2011/09/19/2181842.html
问题:用PyQt来模仿实现Web桌面的问题之一,便是设置无边框窗口时遮盖任务栏的问题。
解决方案:
1 2
| self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
|
- 覆盖实现最大化函数
得到屏幕可显示尺寸,需要用到QDeskWidget类的availableGeometry函数
1 2 3 4
| desktop = QtGui.QApplication.desktop() rect = desktop.availableGeometry()
|
1 2 3 4
| self.setGeometry(rect) self.show()
|
- 实现效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| import sys from PyQt4 import QtGui,QtCore class MyWindow(QtGui.QMainWindow): '''自定义窗口类''' def __init__(self,parent=None): '''构造函数''' super(MyWindow,self).__init__(parent) self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowSystemMenuHint) self.setStyleSheet('''background-color:cyan;''') def showMaximized(self): '''最大化''' desktop = QtGui.QApplication.desktop() rect = desktop.availableGeometry() self.setGeometry(rect) self.show() if __name__ == "__main__": '''主函数''' app = QtGui.QApplication(sys.argv) window = MyWindow() window.showMaximized() sys.exit(app.exec_())
|