繁体   English   中英

将自定义小部件添加到pyqt5上的listWidget

[英]Add Custom Widget to listWidget on pyqt5

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

我编写了这段代码,可以毫无问题地进行编译,但是在运行时它不会在列表上显示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布局的问题,但是我不知道是否必须做一个,因为该Widget是在.ui文件中制作的

正如EYLLANESC在评论中所说:

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

谢谢 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM