gpt4 book ai didi

python - 在窗口的顶部中心显示 QLabel

转载 作者:行者123 更新时间:2023-12-01 06:53:46 26 4
gpt4 key购买 nike

我自己设置 PyQt 时遇到问题。我的想法是创建一个带有歌曲标题和专辑封面的音乐播放器。我已经成功创建了自己的窗口并添加了专辑封面。但我无法将标签添加到正确的位置。我希望歌曲标题位于窗口的顶部中心,如下图所示:

enter image description here

我尝试了很多方法,但没有成功。

import sys
from PyQt5.QtGui import QIcon, QPixmap, QFontDatabase, QFont
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QWidget, QGridLayout, QDialog
from PyQt5.QtCore import Qt, QRect

# Subclass QMainWindow to customise your application's main window
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.title = 'PyQt5 simple window - pythonspot.com'
self.left = 10
self.top = 10
self.width = 480
self.height = 320
self.initUI()

self.setWindowTitle("My Awesome App")

def add_font(self):
# Load the font:
font_db = QFontDatabase()
font_id = font_db.addApplicationFont('American Captain.ttf')
families = font_db.applicationFontFamilies(font_id)
ttf_font = QFont(' '.join(families), 15)
return ttf_font

def initUI(self):
ttf_font = self.add_font()
w = QWidget()
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.show()
album_cover = QLabel(self)
album_pic = QPixmap('resized_image.jpg')
album_cover.setPixmap(album_pic)

album_cover.setAlignment(Qt.AlignCenter)
self.setCentralWidget(album_cover)


art_alb = QLabel(self)
art_alb.setFont(ttf_font)
art_alb.setText("michael buble - christmas")
art_alb.setGeometry(self.x, self.y, self.x, self.y)
art_alb.setAlignment(Qt.AlignTop | Qt.AlignCenter )
art_alb.show()
self.show()



app = QApplication(sys.argv)

window = MainWindow()
window.show()

app.exec_()





最佳答案

您应该使用带有布局的中央小部件来控制子小部件在主窗口中的大小和位置。这是对 initUI 方法的重写,它应该执行您想要的操作:

class MainWindow(QMainWindow):
...

def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)

widget = QWidget()
layout = QGridLayout(widget)

art_alb = QLabel(self)
ttf_font = self.add_font()
art_alb.setFont(ttf_font)
art_alb.setText("michael buble - christmas")

layout.addWidget(art_alb, 0, 0, Qt.AlignTop | Qt.AlignHCenter)

album_cover = QLabel(self)
album_pic = QPixmap('image.jpg')
album_cover.setPixmap(album_pic)

layout.addWidget(album_cover, 1, 0, Qt.AlignHCenter)
layout.setRowStretch(1, 1)

self.setCentralWidget(widget)

请注意,无需继续调用 show(),因为这一切都是由布局自动处理的。欲了解更多信息,请参阅Layout Management Qt 文档中的文章。

关于python - 在窗口的顶部中心显示 QLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58892935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com