PyQt界面开发学习:六.QWiget尺寸限定、鼠标操作及案例

尺寸限定
给QWiget设置最大最小尺寸
给QWiget中的label设置内容边距

from PyQt5.Qt import *
import  sys


if __name__=='__main__':
    app=QApplication(sys.argv)

    win=QWidget()
    win.setWindowTitle('最大最小尺寸')
    # win.setFixedSize(500,500)#这是设定固定尺寸
    '''最大最小尺寸'''
    # win.setMinimumSize(200,200)#设定最小尺寸
    win.setMaximumSize(500,500)#设定最大尺寸
    # win.setMinimumHeight(200)#限定最小高度
    # win.setMaximumHeight(600)#限定最大高度
    win.resize(1000,1000)#并不能变大!因为已经限定了


    ''''内容边距'''
    label=QLabel(win)
    label.setText('学习PYQT5,加油')
    label.resize(300,300)
    label.setStyleSheet('background-color:cyan;')
    label.setContentsMargins(100,200,0,0)#设置左,上,右,下的边距
    print(label.getContentsMargins())#获取内容边距

    win.show()

    sys.exit(app.exec_())

内容边距如图:
这是指的内容占据的区域边距
鼠标操作

from PyQt5.Qt import *
import sys

class mywin(QWidget):
    def __init__(self):
        super().__init__()
    def mouseMoveEvent(self,me):

        print('鼠标移动了',':',me.globalPos())#打印全局xy
        print('鼠标移动了',':',me.localPos())#打印局部xy

if __name__=='__main__':
    app=QApplication(sys.argv)

    win=QWidget()
    win.setWindowTitle('鼠标操作')
    win.resize(500,500)

    label=QLabel(win)
    label.setText('学习pyqt5')
    label.resize(100,100)
    label.setStyleSheet('background-color:cyan;')

    '''设置鼠标形状'''
    # win.setCursor(Qt.BusyCursor)#繁忙样式
    # win.setCursor(Qt.ForbiddenCursor)#禁止访问样式
    label.setCursor(Qt.CrossCursor)

    pixmap=QPixmap('exit.png')
    pixmap_1=pixmap.scaled(30,30)#设置图片大小,注意没直接缩放,而是缩放后返回值
    cursor=QCursor(pixmap_1,0, 0)#先创建鼠标对象,设置热点(默认是中心点)0,0为左上角
    win.setCursor(cursor)#自定义样式

    '''恢复鼠标形状'''
    win.unsetCursor()
    '''获取鼠标对象'''
    print(win.cursor())
    current_cursor=win.cursor()
    print(current_cursor.pos())    #获取鼠标位置
    current_cursor.setPos(0,0)     #设置鼠标位置
    '''鼠标跟踪'''
    #设置了鼠标跟踪,则不按住鼠标移动,也会触发MouseMoveEvent事件
    win_1=mywin()
    win_1.resize(400,400)
    win_1.setMouseTracking(True)#设置鼠标追踪
    win_1.show()

    win.show()

    sys.exit(app.exec_())

鼠标追踪案例
题目:设计一个界面,鼠标为自定义图标(鼠标热点为左上角);当鼠标在界面中移动时,界面中的label随之移动

from PyQt5.Qt import *
import sys

class mylabel(QLabel):
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.setWindowTitle('鼠标操作案例')
        self.resize(500, 500)

        '''设置自定义鼠标'''
        pixmap = QPixmap('exit.png')#图片为同级目录下的图片
        cursor = QCursor(pixmap.scaled(30, 30), 0, 0)#scaled方法返回缩放后的图片
		
		#创建出label
        self.label = QLabel(self)
        self.label.move(0, 0)
        self.label.resize(100, 100)
        self.label.setStyleSheet('background-color:cyan;')
		
        self.setCursor(cursor)#将自定义鼠标设置给界面
        self.setMouseTracking(True)#开启鼠标追踪
        self.show()
    def mouseMoveEvent(self,me):
        x=me.localPos().x()
        y = me.localPos().y()#获取鼠标位置
        print(x,y)
        self.label.move(x,y)#移动label


if __name__=='__main__':
    app=QApplication(sys.argv)
    win=mylabel()

    sys.exit(app.exec_())

鼠标移动方框也会跟着移动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值