pyqt实现自定义窗口拖动大小,到桌面边框自动影藏

该博客介绍了一个使用 PyQt4 实现的自定义窗口,窗口可以被拖动且在靠近桌面边框时能自动隐藏。通过注册热键并结合鼠标事件监听,实现了窗口的高效管理。代码中详细展示了如何处理窗口的拖动、大小调整以及边缘隐藏的逻辑。
摘要由CSDN通过智能技术生成
#-*- coding:utf-8 -*-
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys  
from ctypes import *
from time import sleep
import time
import threading
import PyQt4
from PyQt4.Qt import pyqtSignal
from win32con import *


key = 50
hotkeyId = 3
xdesktop=0
keyhot={"hokeyflag":True}
hokeyflag=True
PADDING=4

dictEnum={'UP':0,'DOWN':1,'LEFT':2,'RIGHT':3,'LEFTTOP':4,'LEFTBOTTOM':5,'RIGHTTOP':6,'RIGHTBOTTOM':7,'NONE':8}
dictRect={'width':200,'height':300}


class POINT(Structure):
    _fields_=[("x",c_ulong),("y",c_ulong)]
    
class MSG(Structure):
    _fields_ = [('hwnd', c_int),
                ('message', c_uint),
                ('wParam', c_int),
                ('lParam', c_int),
                ('time', c_int),
                ('pt', POINT)]
    
if not windll.user32.RegisterHotKey(None,hotkeyId,MOD_ALT,key):
    sys.exit("Can't Rigister Hotkey")



class threadPoint(QThread):
    mysignal=pyqtSignal(int)
    def __init__(self,tyPoint,tyHeight,parent=None):
        super(threadPoint,self).__init__(parent)
        self.type=tyPoint
        self.height=tyHeight
    def run(self):
        while True:
            orig=POINT()
            windll.user32.GetCursorPos(byref(orig))          
            if orig.y in range(self.height,self.height+dictRect['height']):
                if orig.x in range(-5,5) and self.type=="Left":
                    self.mysignal.emit(1)
                    break
                elif orig.x in range(xdesktop-5,xdesktop+5) and self.type=="Right":
                    self.mysignal.emit(2)
                    break
            elif orig.x in range(self.height,self.height+dictRect['width']):
                if orig.y in range(-5,5) and self.type=="Top":
                    self.mysignal.emit(3)
                    break    
            time.sleep(0.2)
            
        self.deleteLater()
            
            

     

class Myqq(QWidget):
    def __init__(self,parent=None):
        super(Myqq,self).__init__(p
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值