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

引子:随着腾讯QQ、奇虎360等公司开放相关应用平台,通过"抢占"用户桌面的WEB桌面越来越多的被采用!
问题:用PyQT来模仿实现WEB桌面的问题之一,便是设置无边框窗口时遮盖任务栏的问题。
解决方案:1.设置窗口标记,实现无边框效果
1 # 设置窗口标记(无边框) 2 self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
2.覆盖实现最大化函数
2.1.得到屏幕可显示尺寸
1 # 得到桌面控件 2 desktop = QtGui.QApplication.desktop() 3 # 得到屏幕可显示尺寸 4 rect = desktop.availableGeometry()
2.2.设置窗口尺寸为屏幕可显示尺寸并显示
1 # 设置窗口尺寸 2 self.setGeometry(rect) 3 # 设置窗口显示 4 self.show()
3.实现效果
PyQt之自定义无边框窗口遮盖任务栏显示问题任务栏自定义
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_())


Tags: 

延伸阅读

最新评论

发表评论