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()