将自定义小部件添加到pyqt5

时间:2017-11-10 00:48:19

标签: python python-3.x pyqt pyqt5

我使用Qt Designer制作两个.ui文件,一个是我的应用程序的主窗口,第二个是我制作的自定义小部件。我的想法是使用这个自定义Widget在我的主应用程序上填充listWidget来显示数据。

我制作了这段代码,它编译时没有问题,但是在运行时它没有在List上显示customWidget

import sys 
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QWidget, QAction, QTabWidget,QVBoxLayout,QDialog
from PyQt5 import QtCore, QtGui, QtWidgets
from mainwindowReclamo import Ui_MainWindow
from widgetReclamos import Ui_Form

#Custom Widget*
class WidgetReclamo(QWidget, Ui_Form):
    """docstring for ClassName"""
    def __init__(self,*args,**kwargs):
        QWidget.__init__(self,*args,**kwargs)
        self.setupUi(self)
        print("I am Alive")


#My Main Program*
class ProgramaReclamos(QMainWindow, Ui_MainWindow): 
    def __init__(self,*args,**kwargs):
        QMainWindow.__init__(self,*args,**kwargs)
        self.setupUi(self)
        #I create an Item*
        Item = QtWidgets.QListWidgetItem(self.listWidget)
        #I create a custom widget*
        Item_Widget = WidgetReclamo()
        #I set the Size from the Item to the same of the widget*
        Item.setSizeHint(Item_Widget.sizeHint())
        #I add it to the list*
        self.listWidget.addItem(Item)

        self.listWidget.setItemWidget(Item, Item_Widget)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    prog = ProgramaReclamos()
    prog.show()
    sys.exit(app.exec_())

我在网上看到了一些问题,他们的答案是针对PyQt4的,他们说了一些关于使用Widget布局的内容,但我不明白我是否必须制作一个因为小部件是在.ui文件中制作的

1 个答案:

答案 0 :(得分:0)

正如EYLLANESC在评论中所说:

  

将Item.setSizeHint(Item_Widget.sizeHint())更改为Item.setSizeHint(Item_Widget.size()) - eyllanesc

谢谢!