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

原创
2016/07/19 08:49
阅读数 1.2K

本文原创,原文地址: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去适应图片的大小。




展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部