控件
控件的大小位置
- .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()
强制标识事件未被处理,事件将会转发给父对象。
- accept()
def mousePressEvent(self, evt) -> None:
evt.accept()
evt.isAccepted()
evt.ignore()