
公众号:uncle39py
2023/04/23阅读:29主题:默认主题
30.PyQt_Qwidget类
1.前言
QWidget继承自QObject,继承的本质是资源的继承,父类的资源在子类中全部可以使用.
QWidget是所有可视化控件的基类,它是一个空白控件
2.创建
window = QWidget()

创建控件的时候,可以传入一个参数做为其父控件;
如果一个控件没有父控件,则它是一个窗口,系统会为其添加上标题栏及最大最小化等操作按钮
3.位置
控件坐标系
如果是顶层窗口,坐标系参照电脑桌面
如果是有父控件,坐标系参照父控件

获取位置的API(需要用的时候具体查):
x,y,pos
为点的位置信息
width,height,size
为实体长宽大小信息
geometry
包含点的位置和实体的大小信息,即涵盖以上两行的信息
设置位置的API

move
为点的位置信息
resize
为实体的大小信息
setGeometry
包含点和实体的信息
adjustSize()
根据内容自适应大小
setFixedSize(500,500)
设置固定size,无法鼠标拖动改变大小
最大最小尺寸API

内容边距API(主要用于调整内容的显示位置,大概瞄一下即可)

4.层级关系调整
窗口中后放上去的控件会遮挡住先放上去的控件,此API可以调整控件间的上下关系,会影响到控件的展示结果
5.鼠标相关
设置鼠标进入相关控件范围后,展示出特殊的形状,比如:带圈圈的繁忙形状,禁止点击的形状等;
win.setCursor(Qt.WaitCursor)
参数为枚举值,有多个,用到的时候具体查

label = QLabel(win)
label.setText("hahaha")
label.resize(100,100)
label.setStyleSheet("background-color:cyan;")
label.setCursor(Qt.ForbiddenCursor)
unsetCursor()
重置形状
关于鼠标操作还有一些比较深的内容(涉及到事件机制),如果只是做些小工具的话,笔者认为暂时没有必要去花精力学习.
6.父子控件关系(在QObject基础上进行了扩充)

7.顶层窗口相关操作
window.setWindowIcon(QIcon("xxx.png"))
设置窗口图标
window.setWindowTitle("窗口标题")
设置窗口标题
window.setWindowOpacity(float)
设置窗口不透明度
窗口状态(大概了解一下,用到再查):

8.交互状态
-
setEnabled(bool)
设置控件是否禁用,比如:控制按钮是否可以点击 -
isEnabled()
获取控件是否可用的属性 -
setVisible(bool)
控制控件显示和隐藏;
注意:控制的是控件是否被绘制出来,而不是控制对象是否存在(obj.deletelater()
是删除对象导致的不可见);
show(),hide(),setHidden(bool)
背后都是调用setVisible(bool)
方法;
-
是否编辑状态(类似记事本,如果有修改过,标题栏有个星星),API用到再查
-
是否为活跃窗口(正在跟用户交付的窗口为活跃窗口)
9.信息提示

-
鼠标放到控件上时,在状态栏显示提示信息,需要使用QMainWindow控件(因为它含有状态栏)
-
鼠标放在控件上时,在控件旁边显示提示信息
作者介绍
