0%

PyQt4--《四》基本控件QLabel

用来显示不可编辑的文字或图片,或GIF动画。也可用作其他控件的占位符。纯文本、超链接或富文本都可以显示在这个Label上。

QLabel类的函数

  • setAlignment():对齐文本,参数有Qt.AlignLeft、Qt.AlignRight、Qt.AlignCenter、Qt.AlignJustify
  • setIndent():设置文本缩进
  • setPixmap():显示一张图片
  • Text():显示label的标题
  • setText(): 编写程序来设定标题
  • selectedText():显示所选文本,其中textInteractionFlag必须设为TextSelectableByMouse
  • setBuddy():将label与某个输入widget相关联
  • setWordWrap(): 启用或禁用文本换行

QLabel类的信号

  • linkActivated:如果Label上面的超链接被点击了,那么就打开URL。setOpenExternalLinks必须被设为true。
  • linkHovered:当鼠标悬停在Label上面的超链接时,与该信号相关联的Slot函数将被调用

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#-*-coding:utf-8-*-

import sys
from PyQt4 import QtGui #基本的GUI组件都存放在QtGui这个模块
from PyQt4 import QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import *

def window():
app = QtGui.QApplication(sys.argv)#每个Pyqt的程序都必须创建一个application对象,application在 QtGui 模块中,sys.argv 参数是命令行中的一组参数。
w = QtGui.QWidget()#创建窗口对象,QWidget窗口组件是PyQt4中所有用户界面对象的基类,这里直接使用QWidget默认的构造。
w.setGeometry(100,100,400,300)
w.setWindowTitle('test')

label1 = QLabel()
label2 = QLabel()
label3 = QLabel()
label4 = QLabel()
label5 = QLabel()

label1.setText("i am label1 AlignRight")
label2.setText(u"<a href = 'http://orion-c.win'>火男之雄起</a>")
label3.setText(u"<a href = 'http://orion-c.win'>火男之雄起</a>")
label4.setText("i am label4 AlignBottom")

label1.setAlignment(Qt.AlignRight)#靠右
label2.setAlignment(Qt.AlignLeft)
label3.setAlignment(Qt.AlignCenter)#水平居中
label4.setAlignment(Qt.AlignBottom)
label5.setPixmap(QPixmap("Warcraft.png"))#显示本地图片
label5.setAlignment(Qt.AlignCenter)#组合使用布局设置

vbox = QVBoxLayout()
vbox.addWidget(label1)
vbox.addStretch()
vbox.addWidget(label2)
vbox.addStretch()
vbox.addWidget(label3)
vbox.addStretch()
vbox.addWidget(label4)
vbox.addStretch()
vbox.addWidget(label5)

label1.setTextInteractionFlags(Qt.TextSelectableByMouse)#可以鼠标选中
label2.setOpenExternalLinks(True)
label2.linkActivated.connect(clicked)#超链接文本点击事件,注意需要setText为a标签,setOpenExternalLinks(True)才能有效果。
label3.linkHovered.connect(hovered)#鼠标放到或者离开链接时,触发事件。

w.setLayout(vbox)

w.show()
sys.exit(app.exec_())#app.exec_()其实就是QApplication的方法,原来这个exec_()方法的作用是“进入程序的主循环直到exit()被调用”,如果没有这个方法,运行的时候窗口会闪退。

def clicked():
print 'clicked'

def hovered():
print "hovering"

if __name__ == '__main__':
window()