添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

一、常用API

1、大小与位置:
x():相对于父控件的位置,顶层控件(没有父控件)则相对于桌面的x位置
y():相对于父控件的y位置,顶层控件(没有父控件)则相对于桌面的y位置
pos():x和y的组合 QPoint(x, y)
width():控件的宽度,不包含任何窗口框架
height():控件的高度,不包含任何窗口框架
size():width和height的组合 ,QSize(width, height)
geometry():用户区域相对于父控件的位置和尺寸组合 QRect(x, y, width, height)
rect():0, 0, width, height的组合 QRect(0, 0, width, height)
frameSize():框架大小
frameGeometry():框架尺寸
move(x, y):操控的是x, y;也就是pos 包括窗口框架
resize(width, height):操控的是宽高 不包括窗口框架
setGeometry(x_noFrame, y_noFrame, width, height):
adjustSize():根据内容自适应大小
setFixedSize():设置固定尺寸


2、最大和最小尺寸:
minimumWidth():最小尺寸的宽度
minimumHeight():最小尺寸的高度
minimumSize():最小尺寸
maximumWidth():最大尺寸的宽度
maximumHeight():最大尺寸的高度
maximumSize():最大尺寸
setMaximumWidth():
setMaximumHeight():
setMinimumWidth():
setMinimumHeight():
setMinimumSize()


3、设置内容边距:
setContentsMargins(左, 上, 右, 下)
getContentsMargins():获取内容边距
contentsRect():获取内容区域


4、鼠标相关:
setCursor():设置鼠标形状
unsetCursor():重置鼠标
cursor() -> QCursor:获取鼠标
hasMouseTracking():判定是否设置了鼠标跟踪
setMouseTracking(bool):设置鼠标是否跟踪 。所谓的鼠标跟踪,其实就是设置检测鼠标移动事件的条件


5、事件相关:
showEvent(QShowEvent):控件显示时调用
closeEvent(QCloseEvent):控件关闭时调用
moveEvent(QMoveEvent):控件移动时调用
resizeEvent(QResizeEvent):控件调整大小时调用
enterEvent(QEvent):鼠标进入时触发
leaveEvent(QEvent):鼠标离开时触发
mousePressEvent(QMouseEvent):
mouseReleaseEvent(QMouseEvent):
mouseDoubleClickEvent(QMouseEvent)
mouseMoveEvent(QMouseEvent):鼠标按下后移动时触发
keyPressEvent(QKeyEvent):键盘按下时调用
keyReleaseEvent(QKeyEvent):
focusInEvent(QFocusEvent):获取焦点时调用
focusOutEvent(QFocusEvent):失去焦点时调用
dragEnterEvent(QDragEnterEvent):拖拽进入控件时调用
dragLeaveEvent(QDragLeaveEvent):拖拽离开控件时调用
dragMoveEvent(QDragMoveEvent):拖拽在控件内移动时调用
dropEvent(QDropEvent):拖拽放下时调用
paintEvent(QPaintEvent):显示控件, 更新控件时调用
changeEvent(QEvent):窗体改变, 字体改变时调用
contextMenuEvent(QContextMenuEvent):访问右键菜单时调用
inputMethodEvent(QInputMethodEvent):输入法调用


6、父子关系:
childAt(x, y):获取在指定坐标的控件。(根据当前点击的坐标获取子控件)
parentWidget():获取指定控件的父控件
childrenRect():所有子控件组成的边界矩形

from PyQt5.Qt import *
import sys
class Window(QWidget):
    def mousePressEvent(self, evt):
        click_x = evt.x()
        click_y = evt.y()
        # 根据当前点击的坐标获取子控件
        child = self.childAt(click_x, click_y)
        if child is not None:
            child.setStyleSheet('background-color: green')
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.setWindowTitle('QWidget')
    window.resize(500, 400)
    label1 = QLabel(window)
    label1.setText('label1')
    label2 = QLabel(window)
    label2.setText('label2')
    label2.move(100, 100)
    window.show()
    sys.exit(app.exec_())

7、层级控制:注意:以下操作专指同级控件
lower():将控件降低到最底层
raise下划线():将控件提升到最上层
a.stackUnder(b):让a放在b下面

from PyQt5.Qt import *
import sys
class Label(QLabel):
    def mousePressEvent(self, evt):
        # 将控件提升到最上层
        self.raise_()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = QWidget()
    window.setWindowTitle('层级关系调整')
    window.resize(500, 500)
    label1 = Label(window)
    label1.setText('QLabel1')
    label1.resize(200, 200)
    label1.setStyleSheet('background-color: red')
    label2 = Label(window)
    label2.setText('QLabel2')
    label2.resize(200, 200)
    label2.setStyleSheet('background-color: green')
    label2.move(100, 100)
    window.show()
    sys.exit(app.exec_())


8、顶层窗口相关:
setWindowIcon(QIcon("resource/header_icon.png")):
windowIcon():
setWindowTitle("社会我顺哥"):
windowTitle():
setWindowOpacity(float):不透明度
windowOpacity():
setWindowState(state):设置窗口的状态
showFullScreen():
showMaximized():
showNormal():正常
isMinimized():是否是最小化窗口
isMaximized():是否是最大化窗口
isFullScreen():是否全屏
window.setWindowFlags(Qt.WindowStaysOnTopHint):窗口样式

from PyQt5.Qt import *
import sys
class Window(QWidget):
    def __init__(self):
        super().__init__()
    def mousePressEvent(self, evt):
        # 判断窗口是否最大化
        if self.isMaximized():
            # 设置最小化
            self.showNormal()
        else:
            # 设置最大化
            self.showMaximized()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.setWindowTitle('QWidget-窗口相关的操作')
    window.show()
    sys.exit(app.exec_())


9、交互状态:
setEnabled(bool):设置控件是否禁用
isEnabled():获取控件是否可用
setVisible(bool):
isHidden():
isVisible():
isVisibleTo(widget):
setWindowModified(bool):是否编辑
isWindowModified():
isActiveWindow():是否为活跃窗口
close():

from PyQt5.Qt import *
import sys
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QWidget-交互状态')
        self.setGeometry(0,0, 500, 400)
        self.setup_ui()
    def setup_ui(self):
        edit = QLineEdit(self)
        btn = QPushButton(self)
        btn.setText('按钮')
        btn.setDisabled(True)
        btn.move(0,100)
        def change(text):
            btn.setDisabled((not len(text) > 0))
        edit.textChanged.connect(change)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

10、信息提示:
statusTip():状态提示
setStatusTip(str):
toolTip():工具提示
setToolTip(str):
setWhatsThis(str):这是啥提示
whatsThis():


11、焦点控制:
setFocus():指定控件获取焦点
setFocusPolicy(Policy):设置焦点获取策略
Qt.TabFocus:通过Tab键获得焦点
Qt.ClickFocus:通过被单击获得焦点
Qt.StrongFocus:可通过上面两种方式获得焦点
Qt.NoFocus:不能通过上两种方式获得焦点(默认值),setFocus仍可使其获得焦点
clearFocus():取消焦点


12、不太重要的方法:
setAttribute(Qt :: WidgetAttribute 属性,bool on = true):属性
QWidget :: mask()const:遮罩 返回当前在小部件上设置的遮罩。如果没有设置掩码,返回值将是一个空白区域。


13、信号:
windowTitleChanged(QString):窗口标题改变信号
windowIconChanged(QIcon):窗口图标改变信号
customContextMenuRequested(QPoint):自定义上下文菜单请求信号