python - 如何在 PyQt5 QLabel(固定大小)中增加/减小字体大小?

标签 python pyqt pyqt5 qlabel

在我的代码中,使用一个具有固定尺寸/大小的 QLabel。一开始,我将文本“Hello,Python”分配给那个QLablel。现在我想将 QLablel 的文本更改为“Hai,欢迎使用 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_())

最佳答案

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_())

enter image description here

关于python - 如何在 PyQt5 QLabel(固定大小)中增加/减小字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62155504/

相关文章:

python - 大量行的 MySQLdb 错误的 executemany

python - Pandas 中的 Iterrows 合并会导致带有后缀的重复列

python - 为 linux 打包 python 应用程序

python - QTableWidget 中的输入掩码

python - 将 PyQt3D 窗口集成到 QMainWindow

python - PyQt - 将 QAction 连接到函数

python - 使用Python将JSON从文件加载到字典的方法?

python - 为什么我的 Django3 项目是用正则表达式代码创建的?

python - 在 PyQt Designer 中实现 LED

python - PyQt5中QTextBrowser中的回车