【Python】【Day5】图像管理系统笔记_图形交互界面_PyQt5【4】【控件设置 & 事件转发】

控件

控件的大小位置

  • .move()
    操控 x 和 y,也就是 pos。(包括窗口框架)
move(x, y)
  • .resize()
    操控宽高(不包括窗口框架)
resize(width, height)
  • .setGeometry
    参照为用户区域。
setGeometry(x_noFrame, y_noFrame, width, height)
  • .adjustSize()
    根据内容自适应大小。
    比如为标签增加内容后,使用该函数自适应大小:
def ITCB_CopyLabel():
    label.setText(label.text() + "copy")
    label.adjustSize()
  • .setFixedSize()
    设定固定尺寸。

内容边距

作用:
设置控件中内容的显示范围。
注意:文本内容在内容区域中靠左,垂直方向居中。

  • setContensMargins()
    设置内容边距。
  • getContentsMargins()
    获取内容边距。
  • contensRect()
    获取内容区域。

事件转发

  当几个对象有父子关系时,子对象触发的事件首先转发给子对象事件函数处理,当子对象函数未进行处理时,转发到其父对象事件函数,层层转发,直到事件函数进行了处理或者没有父对象可以转发为止。

  • 注意,当对象为标签且事件为鼠标点击时,很容易观察到这种现象,因为标签的主要功能是展示,所以 PyQt 并没有对点击事件进行处理,当我们没有重载该事件函数时,事件便会被层层转发。

  • 而按钮则不同,即使我们没有重载事件函数,PyQt 也已经内置了事件处理函数,所以一般点击事件不会被层层转发。

  • 几个方法示例:

    • accept()
      强制标识事件已经被处理(不会被转发)。
    • isAccepted()
      返回事件是否已经被处理。
    • ignore()
      强制标识事件未被处理,事件将会转发给父对象。
    def mousePressEvent(self, evt) -> None:
    	evt.accept()
    	evt.isAccepted()
        evt.ignore()

你可能感兴趣的:(项目记录,qt,学习,pyqt)