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

为什么标签没有完全显示?

为什么标签没有完全显示?

慕哥6287543 2022-10-18 16:43:31
我正在学习如何使用 PyQt5,我遇到了“我的第一个标签”没有在我的屏幕上完成显示的问题。运行代码后显示:代码:from PyQt5 import QtWidgets, QtCore, QtGuifrom PyQt5.QtCore import *from PyQt5.QtGui  import *from PyQt5.QtWidgets import QApplication, QMainWindowimport sysQtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) #enable highdpi scalingQtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True) #use highdpi iconsdef window():  app = QApplication(sys.argv)  win = QMainWindow()  win = QMainWindow()  win.setGeometry(200, 200, 400, 400)  win.setWindowTitle("Tech with Aeijan")  label = QtWidgets.QLabel(win)  label.setText("my first label!")  label.move(50,50)  win.show()  sys.exit(app.exec_())window()
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

QLabel 根据(可能的)父布局管理器调整其内容,但您没有使用任何内容,因此它不知道如何正确显示自己或调整其大小来做到这一点。

最简单的解决方案是调用label.adjustSize(),这将导致标签自身调整大小,以便能够显示其内容。

但是,这不是一个好主意:您正在尝试为小部件使用固定位置(由于很多原因,这通常被认为是一件坏事);结果将是,如果标签文本太大并且用户调整窗口大小,文本将不会完全可见,标签也不知道如何调整大小或最终包装其内容以确保所有显示其文本。

更好的方法是使用布局管理器,但这是为更简单的小部件(如 QWidget 或 QDialog)保留的解决方案;QMainWindow不能那样工作,它需要设置一个中央小部件以确保其内容得到正确显示和管理。

在您的情况下,您可以简单地使用self.setCentralWidget(label),但这会阻止您将任何其他小部件添加到您的窗口。

应该使用“容器”小部件,并且该小部件将设置为主窗口的中心;然后您可以为该小部件设置布局并为其添加标签:

def window():

    app = QApplication(sys.argv)

    win = QMainWindow()


    central = QWidget()

    win.setCentralWidget(central)


    layout = QVBoxLayout()

    central.setLayout(layout)

    # alternatively, the above is the same as this:

    # layout = QVBoxLayout(central)


    label = QtWidgets.QLabel(win)

    label.setText("my first label!")

    layout.addWidget(label)


    # ...


查看完整回答
反对 回复 2022-10-18
  • 1 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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