Button Python listwidget单击项按钮

Button Python listwidget单击项按钮,button,events,items,qlistwidget,Button,Events,Items,Qlistwidget,首先,您应该知道我对Python非常陌生。我目前正在开发一个应用程序来增加我对这门语言的了解 我有一个QListWidget,它包含基于我创建的小部件的项目。此小部件包含更新或删除项目的按钮 所以我很难做这个动作。例如,如果单击“更新”按钮,我希望打开一个窗口并通过获取项目值来加载内容 我怎么能这么做 这是我的实际代码 主窗口 from PyQt5 import QtGui, QtWidgets, QtCore from PyQt5.QtCore import QSize from PyQt

首先,您应该知道我对Python非常陌生。我目前正在开发一个应用程序来增加我对这门语言的了解

我有一个QListWidget,它包含基于我创建的小部件的项目。此小部件包含更新或删除项目的按钮

所以我很难做这个动作。例如,如果单击“更新”按钮,我希望打开一个窗口并通过获取项目值来加载内容

我怎么能这么做

这是我的实际代码

主窗口

from PyQt5 import QtGui, QtWidgets, QtCore
from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QMainWindow, QHBoxLayout

from CustomWidgets.fb_line import fb_line
from Data.data_saver import data_saver
from MainWindows import Ui_MainWindow
from Windows.Ajout import Ajout
from Windows.Parametres import Parametres
from Windows.custom_fb_line import custom_fb_line


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.c_fb_l = custom_fb_line()
        self.parametres = Parametres()
        self.ajout = Ajout()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.btn_parametre.clicked.connect(self.button_open_parametres)
        self.ui.btn_ajouter.clicked.connect(self.button_open_ajout)
        self.ui.btn_annuler.clicked.connect(self.button_annuler)
        self.ui.btn_fermer.clicked.connect(self.close)
        self.addLines()

    def button_open_parametres(self):
        self.parametres.show()

    def button_open_ajout(self):
        self.ajout.show()

    def button_annuler(self):
        self.ui.lw_dossier.clear()
        self.addLines()

    def addLines(self):
        fbs = ds.read_data(data)
        listWidget = self.ui.lw_dossier
        listWidget.reset()

        for fb in fbs:
            item_widget = fb_line(fb)
            item = QtWidgets.QListWidgetItem(listWidget)
            item.setSizeHint(QSize(0, 50))
            listWidget.addItem(item)
            listWidget.setItemWidget(item, item_widget)

            listWidget.show()


data = "./Data/data.pkl"
ds = data_saver()
小部件:

from PyQt5 import QtWidgets
from Objects.enum import enum
from custom_fb_line import Ui_custom_fb_line


class fb_line(QtWidgets.QWidget):
    def __init__(self, fb, *args, **kwargs):
        QtWidgets.QWidget.__init__(self, *args, **kwargs)
        self.ui = Ui_custom_fb_line()
        self.ui.setupUi(self)
        self.ui.le_source.setText(fb.dossier_source)
        self.ui.le_cible.setText(fb.dossier_cible)
        self.ui.le_cron.setText("tous les " + str(fb.cron.number) + " " + enum().get_types()[fb.cron.type])
        self.ui.btn_delete.clicked.connect(self.delete)
        self.ui.btn_modifier.clicked.connect(self.modifier)
        self.ui.btn_demarrer.clicked.connect(self.demarrer)

    def delete(self):
        print('delete ')

    def modifier(self):
        print('modifier')

    def demarrer(self):
        print('démarrer')

所以打印确实显示在控制台中,但我不知道如何实现按钮单击以更新或删除项目。

没关系,我找到了一种方法,实际上非常简单。作为python新手,我不知道如何将参数传递给插入按钮的方法。下面是如何为任何可能有同样问题的人做到这一点

self.ui.btn_delete.clicked.connect(lambda: self.delete(fb))

    def delete(self, fb):
        print('delete ')
        print(fb.dossier_source)