《转》PyQt之自定义无边框窗口遮盖任务栏显示问题

为什么80%的码农都做不了架构师?>>>   hot3.png

引子:随着腾讯QQ、奇虎360等公司开放相关应用平台,通过"抢占"用户桌面的WEB桌面越来越多的被采用!

问题:用PyQT来模仿实现WEB桌面的问题之一,便是设置无边框窗口时遮盖任务栏的问题。

解决方案:

1.设置窗口标记,实现无边框效果

1 # 设置窗口标记(无边框)
2 self.setWindowFlags(QtCore.Qt.FramelessWindowHint)


2.覆盖实现最大化函数

  2.1.得到屏幕可显示尺寸,需要用到QDeskWidget类的availableGeometry函数


1 # 得到桌面控件
2 desktop = QtGui.QApplication.desktop()
3 # 得到屏幕可显示尺寸
4 rect = desktop.availableGeometry()

  

2.2.设置窗口尺寸为屏幕可显示尺寸并显示

1 # 设置窗口尺寸
2 self.setGeometry(rect)
3 # 设置窗口显示
4 self.show()


3.实现效果

《转》PyQt之自定义无边框窗口遮盖任务栏显示问题_第1张图片

 

4.示例程序

复制代码
 1 # coding=gbk
 2 
 3 # 导入模块
 4 import sys
 5 from PyQt4 import QtGui,QtCore
 6 ######################################### 自定义窗口类 ########################################
 7 class MyWindow(QtGui.QMainWindow):
 8     '''自定义窗口类'''
 9     ###################################### 构造、析构函数 ###################################
10     def __init__(self,parent=None):
11         '''构造函数'''
12         # 调用父类构造函数
13         super(MyWindow,self).__init__(parent)
14         # 设置窗口标记(无边框|任务栏右键菜单)
15         self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowSystemMenuHint)
16         # 便于显示,设置窗口背景颜色(采用QSS)
17         self.setStyleSheet('''background-color:cyan;''')
18     ####################################### 覆盖函数 #######################################    
19     def showMaximized(self):
20         '''最大化'''
21         # 得到桌面控件
22         desktop = QtGui.QApplication.desktop()
23         # 得到屏幕可显示尺寸
24         rect = desktop.availableGeometry()
25         # 设置窗口尺寸
26         self.setGeometry(rect)
27         # 设置窗口显示
28         self.show()
29 
30 ########################################### 主函数 #########################################        
31 if __name__ == "__main__":
32     '''主函数'''
33     # 声明变量
34     app = QtGui.QApplication(sys.argv)
35     # 创建窗口
36     window = MyWindow()
37     # 调用最大化显示
38     window.showMaximized()
39     # 应用程序事件循环
40     sys.exit(app.exec_())

转载于:https://my.oschina.net/shadai/blog/698975

你可能感兴趣的:(《转》PyQt之自定义无边框窗口遮盖任务栏显示问题)