在pyqt中添加两个布局

Posted

技术标签:

【中文标题】在pyqt中添加两个布局【英文标题】:add two layouts in pyqt 【发布时间】:2020-06-15 11:25:43 【问题描述】:

我正在尝试将图像放在单选按钮之外,但我只能显示其中一个,那么如何在同一页面中的单选按钮旁边添加图像。

def SecondPage(self):
     layout = QGridLayout()

     rd1 = QRadioButton('r1')
     rd2 = QRadioButton('r2')
     rd3 = QRadioButton('r3')
     rd3.setChecked(True)



     vbox = QVBoxLayout(self)
     labelImage = QLabel(self)
     pixmap = QPixmap('b.png')
     labelImage.setPixmap(pixmap)       
     vbox.addWidget(labelImage, alignment=Qt.AlignCenter)

     page.setLayout(layout)

【问题讨论】:

请提供minimal, reproducible example。 【参考方案1】:

如果你的意思是“除了”为“下面”

def SecondPage(self):
     layout = QHBoxLayout(self)

     rd1 = QRadioButton('r1')
     labelImage = QLabel(self)
     pixmap = QPixmap('b.png')
     labelImage.setPixmap(pixmap)
     vbox = QVBoxLayout() 
     vbox.addWidget(rd1) 
     vbox.addWidget(labelImage, alignment=Qt.AlignCenter)
     layout.addLayout(vbox) 

     rd2 = QRadioButton('r2')
     pixmap = QPixmap('b.png')
     labelImage.setPixmap(pixmap)
     vbox = QVBoxLayout() 
     vbox.addWidget(rd2) 
     vbox.addWidget(labelImage, alignment=Qt.AlignCenter)
     layout.addLayout(vbox) 



     rd3 = QRadioButton('r3')
     rd3.setChecked(True)
     pixmap = QPixmap('b.png')
     labelImage.setPixmap(pixmap)
     vbox = QVBoxLayout() 
     vbox.addWidget(rd3) 
     vbox.addWidget(labelImage, alignment=Qt.AlignCenter)
     layout.addLayout(vbox) 


     self.second_page.setLayout(layout)

【讨论】:

当我运行你的代码时,我得到'function'对象没有属性'setLayout' 在填写内容之前需要先创建。例如,self.second_page = QWidget(); self.second_page.show() 你能更新你的完整代码吗? self.second_page 应该是一个小部件,而不是一个函数。 它工作正常,但我希望单选按钮垂直而不是水平,提前谢谢 3 个垂直按钮,旁边是一张图片,即“b.png”

以上是关于在pyqt中添加两个布局的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 - 动态添加小部件到布局

尽管更新了小部件,但 Pyqt5 更新的小部件未添加到布局中

pyqt5-布局控件

在 PyQt5/Pyside2 中动态添加小部件到流布局

PyQt4 Box布局

Pyqt5 addStretch 在小部件之间?