我第一次使用pyqt,我想弄清楚如何讓我的Qlabel中的文本「example.py」垂直對齊。在這段代碼中,我將Qlabel設置爲35的固定高度,但是文本並不位於窗口頂部和其下面的分隔符頂部之間的中心。PyQt5無法居中對齊Qlabel中的文本
如果我將Qlabel的固定高度設置爲20,那麼它會更接近垂直對齊(但不完全)的東西,但也會引入測試「example.py」底部某些部分的問題隔斷。
也許它與某些保證金或分離器上方的某些內容有關......使我認爲它可能是這種情況,這就是爲什麼文本在底部被切斷的原因。無論如何,我不知道如何解決這個問題。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import os, sys
from PyQt5.QtWidgets import (QApplication, QWidget, QFrame, QSplitter, QStyleFactory,
QHBoxLayout, QVBoxLayout, QLabel)
from PyQt5.QtCore import Qt
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
#self.showFullScreen()
layout = QVBoxLayout()
layout.setContentsMargins(0, 0, 0, 0)
topbar = QLabel("example.py", self)
topbar.setAlignment(Qt.AlignVCenter)
topbar.setIndent(20)
topbar.setFixedHeight(35)
layout.addWidget(topbar)
v_left = QFrame(self)
v_left.setFrameShape(QFrame.StyledPanel)
v_middle = QFrame(self)
v_middle.setFrameShape(QFrame.StyledPanel)
v_right = QFrame(self)
v_right.setFrameShape(QFrame.StyledPanel)
splitter = QSplitter(Qt.Horizontal)
splitter.setHandleWidth(0)
splitter.addWidget(v_left)
splitter.addWidget(v_middle)
splitter.addWidget(v_right)
layout.addWidget(splitter)
self.setLayout(layout)
self.setGeometry(100, 100, 1000, 800)
self.setWindowTitle('PiePy')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
我在設置透明度的過程中發現瞭解決方案。我在代碼中添加了行self.setAttribute(Qt.WA_NoSystemBackground, True)
,並且在應用程序中明確指出Qlabel和它下面的分隔符之間確實存在空格。
解決方案是一個簡單的解決方案,我只是將layout.setSpacing(0)
添加到代碼中,並處理它。
謝謝。我同時也發現了一個解決方案。我編輯了我的OP。 –