为了账号安全,请及时绑定邮箱和手机立即绑定

QTableWidget或QTableView用于切换单元格图像

QTableWidget或QTableView用于切换单元格图像

弑天下 2021-05-13 18:33:57
我正在这里寻找指导。我想要一个带有数据行的表。列之一为空,专用于用户输入。如果用户喜欢该行中的数据,则单击空白单元格将显示图像,即心脏。如果用户以后改变了主意,则单击该图像将删除它。我不确定QTableView是否支持它的功能。如果我认为可以使用QTableView或QTableWidget完成此假设是错误的,则我感谢任何朝着正确方向提出的指导。
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

尝试一下:


import sys

from PyQt5.QtGui     import *

from PyQt5.QtCore    import *

from PyQt5.QtWidgets import *


class MainWindow(QMainWindow):

    def __init__(self):

        QMainWindow.__init__(self)

        self.setGeometry(600, 200, 330, 180)


        self.tableWidget = QTableWidget()

        self.tableWidget.setRowCount(3)

        self.tableWidget.setColumnCount(3)

        self.tableWidget.setHorizontalHeaderLabels(['Product', 'Description', 'Likes/UnLikes'])

        self.setCentralWidget(self.tableWidget)


        for x in range(3):

            self.button = QPushButton('Likes/UnLikes', self) 

            self.button.setFlat(True)

            self.tableWidget.setItem(x, 0, QTableWidgetItem('Product{}'.format(x)))

            self.tableWidget.setItem(x, 1, QTableWidgetItem('Description'))

            self.tableWidget.setCellWidget(x, 2, self.button)


            self.button.clicked.connect(

                lambda state, w=self.tableWidget.cellWidget(x,2), r=x, c=2: self.button_pushed(w, r, c)

            )


    def button_pushed(self, w, r, c): 

        if w.text() != "Likes/UnLikes":

            w.setIcon(QIcon(""))

            w.setText("Likes/UnLikes")

        else:

            w.setIcon(QIcon("E:/_Qt/img/heart.png"))

            w.setText(" Likes")


        w.setIconSize(QSize(20, 20))

        self.tableWidget.setCellWidget(r, c, w)


app = QApplication(sys.argv)

w   = MainWindow()

w.show()

sys.exit(app.exec_())

//img1.sycdn.imooc.com//60a38a620001215503320213.jpg

查看完整回答
反对 回复 2021-05-18
  • 1 回答
  • 0 关注
  • 281 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信