购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 窗口的个性化设置

4.2.1 基本属性设置

窗口有一些基本的组成要素,包括对象名称、图标、标题、位置和背景等,这些要素可以通过窗口的“属性编辑器”进行设置,也可以通过代码实现。下面详细介绍窗口的常见属性设置。

4.2.1.1 设置窗口的对象名称

窗口的对象名称相当于窗口的编号,是唯一的,在编写代码时对窗口的任何设置和使用都是通过该名称来操作的。在Qt Designer设计器中,窗口的对象名称是通过“属性编辑器”中的objectName属性来设置的,默认名称为“MainWindow”,如图4.1所示,用户可以根据实际情况更改,但要保证新名称在当前窗口中的唯一性。

图4.1 通过objectName属性设置窗口的对象名称

除了可以在Qt Designer设计器的“属性编辑器”中对其进行修改,还可以通过Python代码进行设置,在设置时需要使用setObjectName()函数,使用方法如下:

4.2.1.2 设置窗口的标题栏名称

在窗口的属性中,windowTitle属性可用于设置窗口的标题栏名称,标题栏名称就是显示在窗口标题上的文本,windowTitle属性的设置及窗口标题栏预览效果分别如图4.2和图4.3所示。

图4.2 windowTitle属性设置

图4.3 窗口标题栏预览效果

在Python代码中使用setWindowTitle()函数也可以设置窗口标题栏,代码如下:

4.2.1.3 修改窗口的大小

在窗口的属性中,通过展开geometry属性更改宽度和高度的值即可设置窗口的大小,如图4.4所示。

图4.4 通过展开geometry属性修改窗口的大小

说明

在设置窗口的大小时,值只能是整数,不能是小数。

在Python代码中使用resize()函数也可以设置窗口的大小,代码如下:

4.2.2 更换窗口的图标

添加一个新的窗口后,窗口的图标是系统默认的QT图标。如果想更换窗口的图标,则可在“属性编辑器”中设置窗口的windowIcon属性,窗口的默认图标和更换后的图标如图4.5所示。

图4.5 窗口的默认图标与更换后的图标

更换窗口图标的过程非常简单,具体操作如下。

(1)选中窗口,接着在“属性编辑器”中选中windowIcon属性,就会出现 按钮,如图4.6所示。

(2)单击 按钮,在下拉列表中选择“选择文件”菜单,如图4.7所示。

图4.6 窗口的windowIcon属性

图4.7 选择“选择文件”菜单

(3)在弹出的“选择一个像素映射”对话框中选择新的图标文件,单击“打开”按钮后即可将选中的图标文件作为窗口的图标,如图4.8所示。

图4.8 选择图标文件的窗口

通过以上方式修改窗口图标的对应Python代码如下:

多学两招

通过上述代码可以看出,在使用选择图标文件的方式设置窗口图标时用到了图标的绝对路径。这样做的缺点是,其他用户在使用你的程序时没有这个绝对路径,因此无法正常显示图标,那要如何解决该问题呢?可将要使用的图标文件复制到项目的目录下,如图4.9所示。

图4.9 将图标文件复制到项目文件夹下

这时就可以直接使用图标的文件名,上述代码可以更改如下:

4.2.3 设置窗口的背景

为使窗口更加美观,通常会设置窗口的背景,在PyQt6中设置窗口的背景时有两种常用的方法,下面分别对其介绍。

4.2.3.1 使用setStyleSheet()函数设置窗口背景

在使用setStyleSheet()函数设置窗口背景时,需要以background-color或者border-image的方式进行设置,其中background-color可用于设置窗口背景颜色,而border-image可用于设置窗口背景图片。

使用setStyleSheet()函数设置窗口背景颜色的代码如下,效果如图4.10所示。

图4.10 使用setStyleSheet()函数设置窗口背景颜色

说明

使用setStyleSheet()函数设置窗口背景色后,窗口中的控件会继承窗口的背景色,如果想为控件设置背景图片或者图标,则可使用setPixmap()或者setIcon()函数来完成。

在使用setStyleSheet()函数设置窗口背景图片时,要提供作为背景的图片文件,因为代码中要用到图片的路径,这里将图片文件放在与.py文件同一目录层级下的image文件夹中,位置如图4.11所示。

图4.11 图片文件的存放位置

存放完图片文件后就可以使用setStyleSheet()函数设置窗口的背景图片了,代码如下,效果如图4.12所示。

说明

除了在setStyleSheet()函数中使用border-image方式设置窗口背景图片,还可以使用background-image方式进行设置,但用这种方式设置的背景图片会平铺显示,代码如下:

使用background-image方式设置的窗口背景图片的效果如图4.13所示。

图4.12 使用setStyleSheet()函数设置窗口的背景图片

图4.13 使用background-image方式设置窗口的背景图片

4.2.3.2 使用QPalette设置窗口背景

QPalette类是PyQt6提供的一个调色板,专门用于管理控件的外观显示,每个窗口和控件都包含一个QPalette对象。可以通过QPalette对象的setColor()函数设置颜色,通过该对象的setBrush()函数设置图片,最后使用MainWindow对象的setPalette()函数为窗口设置背景图片或者背景。

使用QPalette对象为窗口设置背景颜色的代码如下:

说明

在使用Qt.red时,需要使用以下代码导入Qt模块:

上述代码的运行效果与使用setStyleSheet()函数设置窗口背景颜色的效果一样,可以参见图4.10。

使用QPalette对象为窗口设置背景图片的代码如下,效果如图4.14所示。

说明

上述代码用到了QBrush和QPixmap,因此需要进行导入,代码如下:

图4.14 使用QPalette为窗口设置背景图片

多学两招

观察图4.14,可以发现背景图片没有显示全,这是因为在使用QPalette对象为窗口设置背景图片时,默认是平铺显示的,那么如何让背景图片自动适应窗口的大小呢?这需要在设置背景时对setBrush()方法中的QPixmap对象参数进行设置,具体方法是在生成QPixmap窗口背景图对象参数时,使用窗口大小、QtCore.Qt.AspectRatioMode.IgnoreAspectRatio值和QtCore.Qt.TransformationMode.SmoothTransformation值进行设置。关键代码如下:

运行程序后的效果如图4.15所示,对比图4.14,可以看到图4.15中的背景图片自动适应了窗口大小。

图4.15 使用QPalette为窗口设置背景图片,并自动适应窗口大小

4.2.4 控制窗口透明度

窗口透明度是窗口相对于其他界面的透明显示度,默认不透明,将窗口透明度设置为0.5可成为半透明,对比效果如图4.16所示。

图4.16 当透明度设置为1和0.5时的对比效果

控制窗口透明度的过程非常简单,具体操作如下。

首先选中窗口,然后在“属性编辑器”中设置windowOpacity属性的值,如图4.17所示。

图4.17 通过windowOpacity属性设置窗口透明度

说明

windowOpacity属性可取值为0到1之间的数,其中0表示完全透明,1表示完全不透明。

在Python代码中使用setWindowOpacity()函数也可以设置窗口的透明度,例如,使用以下代码可将窗口的透明度设置为半透明:

4.2.5 设置窗口样式

在PyQt6中可使用setWindowFlags()函数设置窗口的样式,该函数的语法如下:

Qt.WindowFlags参数表示要设置的窗口样式,它的取值有两种类型,分别如下。

☑PyQt6的基本窗口类型及说明如表4.2所示。

表4.2 PyQt6的基本窗口类型及说明

☑自定义顶层窗口外观及说明如表4.3所示。

表4.3 自定义顶层窗口外观及说明

例如,使用以下代码将名称为“MainWindow”的窗口设置为一个对话框窗口:

设置名称为“MainWindow”的窗口只有关闭按钮,而没有最大化、最小化按钮的代码如下:

将窗口设置为对话框窗口和只有关闭按钮窗口的效果分别如图4.18和图4.19所示。

图4.18 有一个问号和关闭按钮的对话框窗口

图4.19 只有关闭按钮的窗口

注意

对窗口样式的设置需要在初始化窗体后才会起作用,即需要将设置窗口样式的代码放在setupUi()函数后执行,例如: 4XrePEHgPq4Ky+nDVhXaEoKY2so7nOp1ASUQX1Ja10vnDKrpDi6LyVniuENcwZCt

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开