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

代码:
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()发布于 2020-04-21 06:22:56
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)
# ...https://stackoverflow.com/questions/61336922
复制相似问题