Python Qt GUI设计:QLabel标签类(基础篇—11)

QLabel对象作为一个占位符可以显示不可编辑的文本或图片,也可以放置一个GIF动画,还可以被用作提示标记为其他控件,纯文本、链接或富文本可以显示在标签上。

QLabel类中的常用方法如下表所示:

QLabel类中的常用信号如下表所示:

通过以下案例加强对QLabel类使用方法的理解吧,效果如下所示:

在这个例子中,QLabel对象label1和label3可以显示文字和图片,QLabel对象label2和label4包含超链接的标题,它们的letOpenExternalLinks被设置为True,因此,如果点击这个标签,则相关的URL将在浏览器中打开。将label2的linkHovered信号连接到link_hovered()函数,所以,当用鼠标划过它时,这个函数将被执行。将label4的linkActivated信号连接到link_clicked()函数,所以,当用鼠标点击它时,这个函数将被执行。实现代码如下所示:

  1. from PyQt5.QtWidgets import QApplication, QLabel ,QWidget, QVBoxLayout
  2. from PyQt5.QtCore import Qt
  3. from PyQt5.QtGui import QPixmap ,QPalette
  4. import sys
  5. class WindowDemo(QWidget):
  6. def __init__(self ):
  7. super().__init__()
  8. label1 = QLabel(self)
  9. label2 = QLabel(self)
  10. label3 = QLabel(self)
  11. label4 = QLabel(self)
  12. #1
  13. label1.setText("这是一个文本标签。")
  14. label1.setAutoFillBackground(True)
  15. palette = QPalette()
  16. palette.setColor(QPalette.Window,Qt.blue)
  17. label1.setPalette(palette)
  18. label1.setAlignment( Qt.AlignCenter)
  19. label2.setText("<A href='https://blog.csdn.net/m0_38106923'>请关注公众号:
  20. 美男子玩编程</a>")
  21. label3.setAlignment( Qt.AlignCenter)
  22. label3.setToolTip('这是一个图片标签')
  23. label3.setPixmap( QPixmap("./4.jpg"))
  24. label4.setText("<A href='https://blog.csdn.net/m0_38106923'>欢迎关注
  25. 不脱发的程序猿博客!</a>")
  26. label4.setAlignment( Qt.AlignRight)
  27. label4.setToolTip('这是一个超链接标签')
  28. #2
  29. vbox = QVBoxLayout()
  30. vbox.addWidget(label1)
  31. vbox.addStretch()
  32. vbox.addWidget(label2)
  33. vbox.addStretch()
  34. vbox.addWidget( label3 )
  35. vbox.addStretch()
  36. vbox.addWidget( label4)
  37. #3
  38. label2.setOpenExternalLinks(True)
  39. # 打开允许访问超链接,默认是不允许,需要使用 setOpenExternalLinks
  40. (True)允许浏览器访问超链接
  41. label4.setOpenExternalLinks(True)
  42. # 点击文本框绑定槽事件
  43. label4.linkActivated.connect( link_clicked )
  44. # 划过文本框绑定槽事件
  45. label2.linkHovered.connect( link_hovered )
  46. label1.setTextInteractionFlags( Qt.TextSelectableByMouse )
  47. self.setLayout(vbox)
  48. self.setWindowTitle("QLabel 例子")
  49. def link_hovered():
  50. print("当鼠标滑过label-2标签时,触发事件。")
  51. def link_clicked():
  52. print("当鼠标点击label-4标签时,触发事件。" )
  53. if __name__ == "__main__":
  54. app = QApplication(sys.argv)
  55. win = WindowDemo()
  56. win.show()
  57. sys.exit(app.exec_())

关注公众号,发送关键字:Java车牌识别,获取项目源码。