首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么标签不完全显示?

为什么标签不完全显示?
EN

Stack Overflow用户
提问于 2020-04-21 06:03:56
回答 1查看 1.9K关注 0票数 0

我正在学习如何使用PyQt5,我遇到了“我的第一个标签”在我的屏幕上没有完整显示的问题。

运行代码后显示:

代码:

代码语言:javascript
复制
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtCore import *
from PyQt5.QtGui  import *
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys

QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) #enable highdpi scaling
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True) #use highdpi icons

def 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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-21 06:22:56

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

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

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

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

在您的示例中,您可以简单地使用self.setCentralWidget(label),但这将阻止您向窗口添加任何其他小部件。

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

代码语言:javascript
复制
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)

    # ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61336922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档