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