我在 PyQt5 中编写了一个应用程序,但后来我决定迁移到 PyQt6。我开始遇到错误,例如 PyQt6 没有我在 PyQt5 中使用的模块。我查阅了文档,解决了几个问题,但无法解决最后一个问题,即我将一个铭文放置在 QGridLayout 中并使用该方法将其固定在窗口的中心,但是在更新到 PyQt6setAlignment(Qt.AlignCenter)
之后,我发现新版本中的Qt模块没有。我去搜索文档、互联网、YouTube、stackoverflow 以及任何可能的地方,并在文档中发现您应该使用 pyqtProperty,而不是 Qt 模块。我去将它导入到一个文件中,但它甚至没有为我导入!到底要做什么以及如何使用这个 pyqtProperty?这是代码:
from PyQt6.QtWidgets import QApplication, QLabel, \
QPushButton, QGridLayout, QWidget
from PyQt6.QtGui import QPixmap
from PyQt6.QtCore import pyqtProperty # вот это атрибут(метод) я хотел импортировать, но у меня не получилось
import sys
class QuizApplication(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Quiz")
self.setGeometry(600, 100, 648, 500)
self.pixmap = QPixmap("background_image.jpg")
self.background_label = QLabel(self)
self.background_label.setObjectName("background_label")
# self.background_label.setAlignment(Qt.AlignCenter) вот это метод я использовал в PyQt5
self.background_label.pyqtProperty()
self.background_label.setPixmap(self.pixmap)
self.background_label.adjustSize()
self.welcome_label = QLabel(self)
self.welcome_label.move(200, 0)
self.welcome_label.setObjectName("welcome_label")
# self.welcome_label.setAlignment(Qt.AlignCenter)
self.welcome_label.setWordWrap(False)
self.welcome_label.setText(
"Это будет викторина по истории, философии и обществознанию.")
self.welcome_label.adjustSize()
self.start_button = QPushButton(self)
self.start_button.move(100, 480)
self.start_button.setObjectName("start_button")
self.start_button.setText("Нажмите чтобы начать!")
self.start_button.adjustSize()
self.grid = QGridLayout()
self.grid.addWidget(self.welcome_label)
self.grid.addWidget(self.background_label)
self.grid.addWidget(self.start_button)
self.grid.setSpacing(10)
self.setLayout(self.grid)
StyleSheet = """
#centralwidget {
border-image: url(background.png) 0 0 0 0 stretch stretch;
}
#welcome_label {
font-size: 23px;
}
#start_button {
font-size: 20px;
color: #ADFF2F;
background-color: #008000;
}
"""
# color: #f77;
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyleSheet(StyleSheet)
window = QuizApplication()
window.resize(648, 500)
window.show()
sys.exit(app.exec())
要修复该错误,您需要导入 QtCore
然后使用不是Qt.AlignCenter,而是QtCore.Qt.AlignmentFlag.AlignCenter