文档章节

PyQt中QLabel背景与字体的一些设置

 酒醉东坡
发布于 2016/07/19 08:49
字数 731
阅读 54
收藏 0

本文原创,原文地址:http://blog.csdn.net/jiuzuidongpo/article/details/45485127

一般来说,对QLabel的背景和字体设置的话,有两种方法:一种是使用样式表,就是stypesheet,另一种就是不使用样式表了。

首先来说不实用样式表的方法,这种方法相对于样式表来说比较灵活,但是设置起来比较麻烦,但是作为一名qt程序猿来说,也是必须要会熟练使用了。当然,我下面要总结的必然也是些不是很完整,很成熟的方法,只是经过本人测试可用的管窥之见,用于不用,全在念间。废话不多说,先看一段代码,根据这段代码由我一一说下:

#coding:utf-8
'''
Created on 2015年2月9日

@author: guowu
'''
import sys
from PyQt4.QtGui import QPalette,QPixmap,QFont,QMainWindow,QLabel,QApplication
from PyQt4.QtCore import Qt
#import classblock

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)

        self.setFixedSize(600,600)
        self.label = QLabel(self)
        self.label.setFixedWidth(400)
        self.label.setFixedHeight(400)
        self.label.setAlignment(Qt.AlignCenter)
        self.label.setText(u"这个标签的长裤可以变化吗aaaaaaaa东西南北?")
        
        pe = QPalette()
        pe.setColor(QPalette.WindowText,Qt.red)
        self.label.setAutoFillBackground(True)
        pe.setColor(QPalette.Window,Qt.blue)
        #pe.setColor(QPalette.Background,Qt.blue)
        self.label.setPalette(pe)
        
        self.label.setFont(QFont("Roman times",10,QFont.Bold))
        
        self.label.move(100,100)
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainwindow = MainWindow()
    mainwindow.show()
    sys.exit(app.exec_())
上面的代码:

1,设置labe的字体居中:

self.label.setAlignment(Qt.AlignCenter)
此居中为上下左右居中

2,设置label的背景颜色和字体颜色:

pe = QPalette()
pe.setColor(QPalette.WindowText,Qt.red)#设置字体颜色
self.label.setAutoFillBackground(True)#设置背景充满,为设置背景颜色的必要条件
pe.setColor(QPalette.Window,Qt.blue)#设置背景颜色
#pe.setColor(QPalette.Background,Qt.blue)<span style="font-family: Arial, Helvetica, sans-serif;">#设置背景颜色,和上面一行的效果一样
self.label.setPalette(pe)

颜色如果用rgb表示的话,则rgb的第四个数可以表示透明度,0为透明,255为不透明。

3,设置字体的类型大小和加粗:

self.label.setFont(QFont("Roman times",10,QFont.Bold))

4,设置label的背景图片,用pixmap:

pixMap = QPixmap("background.jpg").scaled(self.label.width(),self.label.height())
self.label.setPixmap(pixMap)
将上面的设置背景的代码注掉,然后添上以上两行代码,即可为label设置背景图片,注意图片路径要写正确。这种方式一般要写到paintEvent方法内,否则label的字体内容可能被覆盖。

5,设置字体的大小和类型等还有另一中方案:

font = QFont()
font.setFamily("Helvetica")
fontHeight = rect.height()/1
font.setPixelSize(fontHeight)
font.setBold(True)
self.label.setFont(font)

以上就是不用样式表来设置的方法。


如果使用样式表的话,则就比较简单了:

添上下面的样式表,则可设置这个窗口中所有labe的背景颜色,字体颜色大小等,也可以针对每个label进行设置。

self.setStyleSheet("QLabel{background:white;}"
                   "QLabel{color:rgb(100,100,100,250);font-size:15px;font-weight:bold;font-family:Roman times;}"
                   "QLabel:hover{color:rgb(100,100,100,120);}")
若使用背景图片:

则第一行改为:

"QLabel{background-image:url(background.jpg);}"
这样设置的话,背景图片无法自适应大小,需要label去适应图片的大小。




© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 30
码字总数 14441
作品 0
郑州
程序员
私信 提问
《Rapid GUI Programming with Python and Qt》读书笔记

一些唠叨 搜索pyqt资料的时候发现了这本《Rapid GUI Programming with Python and Qt》,试读了一下觉得非常适合我这种完全初次接触qt与pyqt的新手,尽管是英文读物,但是不算太难理解,读起...

Feng_Yu
2014/06/18
0
1
树莓派(Raspberry PI)上的Python GUI实现(学习+总结)

1 准备SD卡8G以上 编译过程中,会耗用大量存储空间,4G不够用的。 2 更新资源的索引清单 sudo apt-get update (从服务上下载索引清单)sudo apt-get upgrade (比较索引清单,更新依赖关系)...

JayH
2013/08/12
0
4
PyQt install for windows

Windows下PyQt4的安装 1.环境 OS: Windows 7 64bits Python: 2.7.2 2.软件下载 我们可以在http://www.riverbankcomputing.co.uk/software/pyqt/download这里,获得PyQt4的下载,请注意选择正...

Jr小王子
2015/03/23
0
2
pyqt sqlite3 icu fts3 fts4 enabled 。全文搜索 功能

目标:windows下让pyqt测试程序支持sqlite3 icu fts3/4的全文搜索功能。 环境: windows XP pyqt 安装文件 PyQt-Py2.7-x86-gpl-4.9.6-1.exe pyqt 源码包 PyQt-win-gpl-4.9.4.zip python 版本...

kjpioo
2013/02/09
0
0
PyQt 4.8 发布, Qt库的Python绑定

PyQt是Python是Qt库的Python绑定。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP和PyQt没有分开。PyQt是用SIP写的。PyQt遵从奇趣的许...

红薯
2010/10/23
719
0

没有更多内容

加载失败,请刷新页面

加载更多

dockerfile 镜像构建(1)

通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下: [root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 . 运行镜像: [root@iZuf61quxhnlk9m2tkx16cZ de...

Canaan_
32分钟前
1
0
Redis radix tree源码解析

Redis实现了不定长压缩前缀的radix tree,用在集群模式下存储slot对应的的所有key信息。本文将详述在Redis中如何实现radix tree。 核心数据结构 raxNode是radix tree的核心数据结构,其结构体...

阿里云云栖社区
34分钟前
7
0
vue import 传入变量

在做动态添加component的时候,传入变量就会报错,出现以下错误信息: vue-router.esm.js?fe87:1921 Error: Cannot find module '@/components/index'. at eval (eval at ./src/components ......

朝如青丝暮成雪
36分钟前
1
0
Flutter开发 Dio拦截器实现token验证过期的功能

前言: 之前分享过在Android中使用Retrofit实现token失效刷新的处理方案,现在Flutter项目也有“token验证过期”的需求,所以接下来我简单总结一下在Flutter项目中如何实现自动刷新token并重...

EmilyWu
38分钟前
7
0
final Map可以修改内容,final 常量不能修改

1.final Map 可以put元素,但是不可以重新赋值 如: final Map map = new HashMap(); map = new HashMap();//不可以 因为栈中变量map引用地址不能修改 2.final str = “aa”; str = "bb";/......

qimh
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部