【问题标题】:How to Increase /decrease the font size In PyQt5 QLabel (Fixed Size)?如何在 PyQt5 QLabel(固定大小)中增加/减小字体大小?
【发布时间】:2020-09-21 03:04:38
【问题描述】:

在我的代码中,使用一个具有固定尺寸/大小的 QLabel。一开始,我将文本“Hello,Python”分配给那个QLablel。现在我想将 QLablel 的文本 更改为“Hai,Welcome to Python”。

如何减小 QLabel 的字体大小,并以该特定区域/大小显示全文(没有任何截断/隐藏/隐藏)?

import sys
from PyQt5.QtWidgets import *


class Labelexample(QWidget):
    def __init__(self):
        super().__init__()
        self.labl = QLabel("Hello,Python",self)
        self.tbox = QLineEdit(self)
        self.labl.setFixedSize(150,30)
        self.tbox.setFixedSize(200,30)
        self.labl.move(50,50)
        self.tbox.move(140,50)
        self.labl.setText("Hai, welcome to Python")
        # self.labl.adjustsize()

app = QApplication(sys.argv)
mywin = Labelexample()
mywin.show()
sys.exit(app.exec_())

【问题讨论】:

    标签: python pyqt pyqt5 qlabel


    【解决方案1】:

    QFontMetrics 类提供字体度量信息。 https://doc.qt.io/qt-5/qfontmetrics.html#QFontMetrics

    试试看:

    import sys
    from PyQt5.Qt import *
    
    
    class Labelexample(QWidget):
        def __init__(self):
            super().__init__()
    
            text = "Hello,Python"
            self.labl = QLabel(text, self)
    #        self.labl.setFixedSize(150,30)
            self.labl.setFixedWidth(150)                            # +++
            self.labl.setMinimumHeight(30)                          # +++
    
            self.labl.move(50,50)
            self.labl.setStyleSheet("background-color: yellow;")
    
            self.tbox = QLineEdit(self)
            self.tbox.setFixedSize(200,30)
    #        self.tbox.move(140,50)
            self.tbox.move(200,50)
            self.tbox.returnPressed.connect(self.return_pressed)    # +++ 
    
            self.pointSize = 20                                     # 20
            self.fontD = self.font()
            self.fontD.setPointSize(self.pointSize)
            self.metrics = QFontMetrics(self.fontD)
            self.width = self.metrics.width(text)
            self.height = self.metrics.height()
            self.labl.setFixedWidth(self.width)
            self.labl.setFont(self.fontD)        
    
    #        text = "Hai, welcome to Python"
    #        self.labl.setText(text)                                 #         v             v
            self.labl.adjustSize()                                   # - adjustsize  + adjustSize
    
        def return_pressed(self):                                    # +++
            if not self.tbox.text(): 
                self.labl.setText('')
                self.labl.setFont(self.fontD)
                self.labl.adjustSize()
                return
            width = self.metrics.width(self.tbox.text())
            height = self.metrics.height()
    
            if not width: 
                width = 1
    
            koef = self.width / width
            pointSize = int(self.pointSize * koef)
            font = self.font()
            font.setPointSize(pointSize)
            self.labl.setFont(font)
            height = self.metrics.height()
            self.labl.setText(self.tbox.text())
            self.labl.adjustSize()
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        mywin = Labelexample()
        mywin.resize(450, 415)
        mywin.show()
        sys.exit(app.exec_())
    

    【讨论】:

      【解决方案2】:

      使用.setFont()

      例如:

      self.labl.setFont(QFont('Arial', 10))
      

      【讨论】:

      • 我想动态增加或减少字体大小以适应文本,指定/固定,区域/大小。您的答案与初始化字体大小有关。使用这个命令我们不能动态改变字体大小。请检查
      猜你喜欢
      • 2010-11-14
      • 2020-12-17
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 2021-03-27
      • 2021-08-14
      相关资源
      最近更新 更多