You need to enable JavaScript to run this app. PyQt5中QPushButton点击后如何让QLabel文本分两行独立显示
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5中QPushButton点击后如何让QLabel文本分两行独立显示

PyQt5点击按钮后QLabel分两行展示文本的实现方案

问题根因

  • 原代码中QLabel预设高度仅20像素,即使插入换行符也无法完整承载两行文本的显示需求,会出现第二行被裁切的问题
  • 原槽函数传入setText的字符串没有添加换行分隔符,默认按单行格式渲染
  • 原代码存在几处语法书写错误:类定义关键字class被写成大写Class、程序入口判断关键字if被写成大写If,会导致程序无法正常启动

关键修改点

  • 调整QLabel的几何位置参数,将高度从20像素提升至60像素,预留两行文本的显示空间
  • 修改槽函数内的文本设置内容,使用\n作为行分隔符,匹配要求的两行文本格式
  • 修正代码中的大写语法关键字问题,保留原有点击后隐藏按钮的交互逻辑

修正后可直接运行的完整代码

from PyQt5 import QtCore, QtGui, QtWidgets
import sys

class Ui_MainWindow(object):
    def setupUi(self, MainWindow): 
        MainWindow.resize(506, 312) 
        self.centralwidget = QtWidgets.QWidget(MainWindow) 
        
        # 添加PushButton组件
        self.pushButton = QtWidgets.QPushButton(self.centralwidget) 
        self.pushButton.setGeometry(QtCore.QRect(200, 150, 93, 28)) 
        # 绑定点击信号到槽函数
        self.pushButton.clicked.connect(self.changelabeltext) 
    
        self.label = QtWidgets.QLabel(self.centralwidget) 
        # 调整高度为60像素,适配两行文本完整显示
        self.label.setGeometry(QtCore.QRect(140, 90, 221, 60))   
        # 按钮点击前清空标签文本
        self.label.setText("")   
        
        MainWindow.setCentralWidget(self.centralwidget) 
        self.retranslateUi(MainWindow) 
        QtCore.QMetaObject.connectSlotsByName(MainWindow) 

    def retranslateUi(self, MainWindow): 
        _translate = QtCore.QCoreApplication.translate 
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 
        self.pushButton.setText(_translate("MainWindow", "Push Button")) 
        
    def changelabeltext(self): 
        # 通过\n分隔两行指定格式文本
        self.label.setText("1 You clicked\n2 PushButton")     
        # 点击后隐藏PushButton
        self.pushButton.hide() 

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    
    MainWindow = QtWidgets.QMainWindow() 
    ui = Ui_MainWindow() 
    ui.setupUi(MainWindow) 
    MainWindow.show() 

    sys.exit(app.exec_())

额外提示:如果后续需要文本宽度自适应换行,可给QLabel添加self.label.setWordWrap(True)属性,文本会根据控件宽度自动拆行,无需手动添加换行符。

内容的提问来源于stack exchange,提问作者Ali Boucharbat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.10 21:06:03