簡體   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