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

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

运行代码后显示:

http://img4.mukewang.com/634e67430001527d03980427.jpg

代码:


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


慕哥6287543
浏览 190回答 1
1回答

喵喵时光机

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)    # ...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python