在我的代码中,使用一个具有固定尺寸/大小的 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_())
关于python - 如何在 PyQt5 QLabel(固定大小)中增加/减小字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62155504/