《转》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_())
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值