为了账号安全,请及时绑定邮箱和手机立即绑定

如何增加/减少 PyQt5 QLabel 中的字体大小(固定大小)?

如何增加/减少 PyQt5 QLabel 中的字体大小(固定大小)?

慕斯709654 2022-12-20 16:34:32
在我的代码中,使用一个具有固定维度/大小的 QLabel。一开始,我将文本 “Hello,Python”分配给该 QLablel。现在我想将 QLablel 的文本更改为“Hai,欢迎使用 Python”。如何减小 QLabel 的字体大小,并显示 具有该特定区域/大小的全文(没有任何截断/隐藏/隐藏)?import sysfrom 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_())
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

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

//img1.sycdn.imooc.com//63a173b7000109e004590450.jpg

查看完整回答
反对 回复 2022-12-20
?
呼唤远方

TA贡献1856条经验 获得超11个赞

采用.setFont()

例如。:

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


查看完整回答
反对 回复 2022-12-20
  • 2 回答
  • 0 关注
  • 790 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号