【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.ArrowCursor Qt.UpArrowCursor、Qt.CrossCursor
Qt.WaitCursor Qt.IBeamCursor、Qt.WhatsThisCursor
Qt.BusyCursor Qt.SizeVerCursor、Qt.SizeHorCursor
Qt.ForbiddenCursor Qt.SizeAllCursor、Qt.SizeBDiagCursor
Qt.PointingHandCursor Qt.SplitHCursor、Qt.ClosedHandCursor
Qt.OpenHandCursor Qt.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()

你可能感兴趣的:(Python记录册,python,qt,开发语言)