随笔- 12  评论- 3  文章- 0 

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

引子:随着腾讯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.实现效果

 

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_())





posted on 2011-09-19 22:26 会说话的哑巴 阅读(...) 评论(...) 编辑 收藏