Python pyqt4小部件显示在布局外部

Python pyqt4小部件显示在布局外部,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我想要照片中的效果。qlabel位于布局中,字体居中。下面是我写的代码,这与我想要的不同。首先,qlabel位于布局之外,其次,字体不居中 导入系统 从PyQt4.QtCore导入Qt 从PyQt4.QtGui导入QLabel、QApplication、QWidget、QVBoxLayout、QStyleOption、QPainter、QStyle 类示例(QWidget): 定义初始化(自): super(例如,self)。\uuuuu init\uuuuuuuu() self.setGeom

我想要照片中的效果。qlabel位于布局中,字体居中。下面是我写的代码,这与我想要的不同。首先,qlabel位于布局之外,其次,字体不居中

导入系统 从PyQt4.QtCore导入Qt 从PyQt4.QtGui导入QLabel、QApplication、QWidget、QVBoxLayout、QStyleOption、QPainter、QStyle 类示例(QWidget): 定义初始化(自): super(例如,self)。\uuuuu init\uuuuuuuu() self.setGeometry(100100500500) vbox=QVBoxLayout() self.setLayout(vbox) a=QLabel('aaa') b=QLabel('bbb') vbox.addWidget(a) vbox.addWidget(a,alignment=Qt.AlignHCenter | Qt.AlignTop) vbox.addWidget(b,alignment=Qt.AlignHCenter | Qt.AlignBottom) self.setStyleSheet(“”) 范例{ 边框宽度:1px; 边框样式:实心; 边框颜色:红色; 最小宽度:500px; 最大宽度:500px; 最小高度:500px; 最大高度:500px; 填充:1px 1px 1px 1px; 边缘底部:30px; } QLabel{ 最小宽度:500px; 最大宽度:500px; 最小高度:50px; 最大高度:50px; 边际:0px; 填充:0px; 背景色:#cdcdcd; 文本对齐:居中对齐; } """) self.show() def paintEvent(自身,事件): super(示例,self).paintEvent(事件) opt=QStyleOption() opt.initFrom(self) 油漆工=油漆工(自身) painter.setRenderInt(QPainter.AntiAlias) self.style().drawPrimitive(QStyle.PE_小部件,opt,painter,self) def main(): app=QApplication(sys.argv) ex=示例() sys.exit(app.exec_()) 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': main()
布局的逻辑是处理元素的几何图形,但您也在使用样式表处理几何图形,从而导致您观察到的问题。另一方面,QLabel没有文本对齐属性,但必须使用
qproperty对齐:AlignCenter

为了避免这种情况,最好避免使用样式表管理几何体,但使用类的方法,考虑到解决方案是:

导入系统 从PyQt4.QtCore导入Qt 从PyQt4.QtGui导入( QLabel, QApplication, QWidget, QVBoxLayout, QStyleOption, 油漆工, QStyle, ) 类示例(QWidget): 定义初始化(自): super(例如,self)。\uuuuu init\uuuuuuuu() self.setGeometry(100100500500) self.label_a=QLabel(“aaa”) self.label_b=QLabel(“bbb”) 自标签设置固定高度(50) 自标签设置固定高度(50) vbox=QVbox布局(自) vbox.setContentsMargins(1,1,1,1) vbox.addWidget(self.label_a) vbox.addWidget(QWidget(),stretch=1) vbox.addWidget(self.label_b) 自设置固定大小(500500) 自选表格( """ 范例{ 边框宽度:1px; 边框样式:实心; 边框颜色:红色; 填充:1px 1px 1px 1px; } QLabel{ 边际:0px; 填充:0px; 背景色:#cdcdcd; qproperty对齐:对齐中心; } """ ) def paintEvent(自身,事件): super(示例,self).paintEvent(事件) opt=QStyleOption() opt.initFrom(self) 油漆工=油漆工(自身) painter.setRenderInt(QPainter.AntiAlias) self.style().drawPrimitive(QStyle.PE_小部件,opt,painter,self) def main(): app=QApplication(sys.argv) ex=示例() 例如:show() sys.exit(app.exec_()) 如果名称=“\uuuuu main\uuuuuuuu”: main()