【Python】pyqt5-----QWidget

QWidget是QObject的一个子类,父类的功能子类可以用。

一、位置大小设置

move(x,y)操控x,y;包括窗口框架。
resize(width,height)操控宽和高;不包括窗口框架。
setGeometry(x_noFrame,y_noFrame,width,height)设置用户区域的x,y,宽度和高度。
adjustSize()根据内容自适应大小。
setFixedSize()设定固定尺寸。

二 、尺寸限定

获取最大和最小尺寸

minimumWidth()获取最小宽度。
minimumHeight()获取最小高度。
minimumSize()获取最小宽度和高度。
maximumWidth()获取最大宽度。
maximumHeight()获取最大高度。
maximumSize()获取最大宽度和高度。

设置尺寸限定

setMinimumWidth()设置最小宽度。
setMinimumHeight()设置最小高度。
setMinimumSize()设置最小宽度和高度。
setMaximumWidth()设置最大宽度。
setMaximumHeight()设置最大高度。
setMaximumSize()设置最大宽度和高度。

三 、内容边距

setContentsMargins(左,上,右,下)设置内容边据。
getContentsMargins(左,上,右,下)获取内容边距,返回的是一个元组。
contentsRect()获取内容区域。

四 、与鼠标相关的设置

系统鼠标样式

setCursor()设置鼠标样式。以下是鼠标样式,常用的会放在左边。
Qt.ArrowCursorQt.UpArrowCursor、Qt.CrossCursor
Qt.WaitCursorQt.IBeamCursor、Qt.WhatsThisCursor
Qt.BusyCursorQt.SizeVerCursor、Qt.SizeHorCursor
Qt.ForbiddenCursorQt.SizeAllCursor、Qt.SizeBDiagCursor
Qt.PointingHandCursorQt.SplitHCursor、Qt.ClosedHandCursor
Qt.OpenHandCursorQt.BlankCursor
unsetCursor()重置形状。

自定义鼠标样式

pixmap = QPixmap("smile.png") #应用图片
pixmap = pixmap.scaled(50,50) #修改图片大小
cursor = QCursor(pixmap) #设置自定义鼠标样式,这里可以设置热点
btn.setCursor(cursor) #应用自定义的鼠标样式

鼠标跟踪----检测鼠标移动事件的条件

hasMouseTracking()判定是否设置了鼠标跟踪。
setMouseTracking()设置鼠标是否跟踪。跟踪:鼠标移动时,不处于按下状态,也会触发mouseMoveEvent事件。不跟踪:鼠标移动时,处于按下状态,才会触发mouseMoveEvent事件

例子----标签跟随鼠标坐标移动

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def mouseMoveEvent(self, mv):
        print("鼠标移动", mv.localPos()) #localPos()用于获取鼠标的坐标
        label.move(int(mv.localPos().x()), int(mv.localPos().y()))

app = QApplication(sys.argv)
window = Window()
window.setWindowTitle("鼠标跟踪")
window.resize(400,300)
window.setMouseTracking(True)#开启鼠标追踪

label = QLabel(window)
label.setText("鼠标跟踪")
label.move(100,100)
label.setStyleSheet("background-color:cyan;font-size: 20px;")
window.show()
sys.exit(app.exec_())

五、事件方法

显示和关闭事件showEvent():控件显示时调用;closeEvent():控件关闭时调用。
移动事件moveEvent():控件移动时调用。
调整大小事件resizeEvent():控件调整大小时调用。
鼠标事件

enterEvent():鼠标进入时触发;leaveEvent():鼠标离开时触发;

mousePressEvent():鼠标按下时触发;

mouseReleaseEvent():鼠标释放时触发;

mouseDoubleClickEvent():鼠标双击时触发;

mouseMoveEvent():鼠标移动时触发。

键盘事件keyPressEvent():键盘按下时调用;keyReleaseEvent():键盘释放时调用。
焦点事件focusInEvent():获取焦点时调用;focusOutEvent():失去焦点时调用。
拖拽事件dragEnterEvent():拖拽进入控件时调用;dragLeaveEvent():拖拽离开控件时调用;dragMoveEvent():拖拽在控件内移动时调用;dragEvent():拖拽放下时调用。
绘制事件paintEvent():显示控件,更新控件时调用
改变事件changeEvent():窗体改变,字体改变时调用。
右键菜单contextMenuEvent():访问右键菜单时调用。
输入法inputMethodEvent():输入法调用

六、父子关系

childAt(x,y)获取在指定坐标的控件。
parentWidget()获取指定控件的父控件。
childRect()所有子控件组成的边界矩形。

七、顶层窗口相关操作

setWindowIcon(QIcon('xxx.png'))设置图标。
windowIcon()获取图标。
setWindowTitle("....")设置标题。
windowTitle()获取标题。
setWindowOpacity(float)设置不透明度。
windowOpacity()获取不透明度。
setWindowState(state)

设置窗口状态。Qt.WindowNoState:无状态;

Qt.WindowMinimized:最小化;Qt.WindowMaximized:最大化;

Qt.WindowFullScreen:全屏;Qt.WindowActive:活动窗口。

windowState()获取窗口状态。
showFullScreen()展示全屏。
showMaximized()展示最大化。
showMinimized()展示最小化。
showNormal正常展示。
isMinimized()判断是否为最小化。
isMaxmized()判断是否为最大化。
isFullScreen()判断是否为全屏。
setWindowFlags(Qt.WindowStaysOnTopHint)

窗口样式。

Qt.MSWindowsFixedSizeDialogHint:窗口无法调整大小

Qt.FramelessWindowHint:窗口无边框

Qt.CustomizeWindowHint:有边框但无标题栏和按钮,不能移动和拖动

Qt.WindowTitleHint:添加标题栏和一个关闭按钮

Qt.WindowSystemMenuHint:添加系统目录和一个关闭按钮

Qt.WindowMaximizeButtonHint:激活最大化和关闭按钮,禁止最小化按钮

Qt.WindowMinimizeButtonHint:激活最小化和关闭按钮,禁止最大化按钮

Qt.WindowMinMaxButtonsHint:激活最小化,最大化和关闭按钮

Qt.WindowCloseButtonHint:添加一个关闭按钮

Qt.WindowContextHelpButtonHint:添加问号和关闭按钮,同对话框

Qt.WindowStaysOnTopHint:窗口始终处于顶层位置

Qt.WindowStaysOnBottomHint:窗口始终处于底层位置

八、控件交互

setEnabled(bool)设置控件是否禁用。
isEnabled()获取控件是否可用。
setVisible(bool)设置控件是否可见。
isHidden()判定控件是否隐藏。
isVisible()获取控件最终状态是否可见。
isVisibleTo(widget)如果能随着widget控件的显示和隐藏, 而同步变化, 则返回True。
setWindowModified(bool)被编辑状态显示*、没有被编辑不显示*(需要在setWindowTitle处设置标题为"....[*]",中括号里必须是*)
isWindowModified()判断窗口是否是被编辑状态
isActiveWindow()判断是否为活跃窗口。
close()关闭窗口。setAttribute(Qt.WA_DeleteOnClose, True)

九、信息提示

setToolTip(str)鼠标悬停在控件上一会后, 展示在旁边。
toolTip()获得信息提示内容。
setToolTipDuration(msec)设置显示时长。
toolTipDuration()获取显示时长。
setWhatsThis(str)切换到"查看这是啥"模式, 点击该控件时显示。
whatsThis()获取这是啥内容。

十、焦点控制

setFocus()指定控件获取焦点。
setFocusPolicy(Policy)

设置焦点获取策略。Qt.TabFocus:通过Tab键获得焦点。

Qt.ClickFocus:通过被单击获得焦点。

Qt.StrongFocus:可通过上面两种方式获得焦点。

Qt.NoFocus:不能通过上两种方式获得焦点(默认值),setFocus仍可使其获得焦点。

clearFocus()取消焦点。

十一、信号相关

windowTitleChanged(QString)窗口图标改变信号。
windowIconChanged(QIcon)窗口图标改变信号。
customContextMenuRequested(QPoint)

自定义上下文菜单请求信号。

setContextMenuPolicy(Qt.CustomContextMenu)其中Qt.CustomContextMenu为发射信号。

def menu_one(point):
    #menu内容
    dest_point = window.mapTopGlobal(point)
    菜单对象.exec_(dest_point)#设置菜单生成位置。
    
window.setContextMenuPolicy(Qt.CustomContextMenu)
customContextMenuRequested.connect()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SamRol

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值