如何使用pyqt4删除表格小部件中的特定行边框

古塔米

这里我有一个示例代码,我需要删除表格部件中特定行的边框。我尝试了很多方法,但是找不到任何方法。可以告诉我如何删除边框的边框。表格小部件。我使用gridlayout(False),但是此方法用于删除表格的所有边框。请帮帮我。谢谢。

以下是我的代码:

from PyQt4 import QtCore, QtGui
import sys, collections
from functools import partial
class Inventory_items(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Inventory_items, self).__init__(parent)
        print "hello inventory"
        # self.showFullScreen()
        self.inventory_widget = QtGui.QWidget()
        self.inventory_widget.show()
        self.inventory_widget.setStyleSheet("QWidget {background-color: black;color: white;}")
        self.inventory_dict = {"Shirt": {"Men Solid Formal Blue shirt": ["10.10.1(Red)","10.10.2(blue)"],"Unit:Quantity": ["10", "5"],"Discount:0%": ["300", "400"]},
        "Frocks":{"Unit:Quantity":["50","30"],"Baby Girls Partywear Frock":["10.10.1(pink)","10.10.1(black)"],"Discount:0%": ["900", "1200"]},"Shoes":{"Unit:Quantity":["100","300"],"Sparx Men's Running Shoes":["Navy Blue","Orange color"],"Discount:0%": ["2000", "2500"]},"Phones":{"Unit:Quantity":["30","10"],"Realme 2 Pro Smart phone":["32 GB(4 GB RAM)","64 GB(4 GB RAM)"],"Discount:0%": ["15000", "1800"]},"Perfume":{"Unit:Quantity":["10","3"],"Fugo Perfume":["30ml","60ml"],"Discount:0%": ["300", "600"]}}

        self.inventr_gridbox = QtGui.QGridLayout(self.inventory_widget)

        self.table1 = QtGui.QTableWidget()
        self.table1.setFocusPolicy(QtCore.Qt.NoFocus);
        self.table1.setStyleSheet("QTableWidget{gridline-color: white}")
        self.Inventory_scrollarea = QtGui.QScrollArea(widgetResizable=True)
        self.Inventory_scrollarea.setWidget(self.inventory_widget)
        self.Inventory_scrollarea.showFullScreen()

        self.table1.horizontalHeader().hide()
        self.table_item1 = QtGui.QTableWidgetItem()
        self.table1.setRowCount(21)

        self.table1.verticalHeader().hide()
        self.table1.setColumnCount(7)
        stylesheet1 = "::section{Background-color:black;color: white;font-size: 25px;}"
        header1 = self.table1.horizontalHeader()
        vh1 = self.table1.verticalHeader()


        vh1.setDefaultSectionSize(50)
        header1.setResizeMode(0, QtGui.QHeaderView.ResizeToContents)
        header1.setResizeMode(1, QtGui.QHeaderView.ResizeToContents)
        header1.setResizeMode(2, QtGui.QHeaderView.Stretch)
        header1.setResizeMode(3, QtGui.QHeaderView.Stretch)
        header1.setResizeMode(4, QtGui.QHeaderView.Stretch)
        header1.setResizeMode(5, QtGui.QHeaderView.ResizeToContents)
        header1.setResizeMode(6, QtGui.QHeaderView.ResizeToContents)
        self.table1.setColumnWidth(2,350)

        self.index = 0
        for key, value in self.inventory_dict.items():


            self.shrtlabel = QtGui.QPushButton()
            self.shrtlabel.setIcon(QtGui.QIcon("./{0}.png".format(key)))
            self.shrtlabel.setStyleSheet("QPushButton{outline : None;}")
            self.shrtlabel.setIconSize(QtCore.QSize(40,60))
            self.table1.setCellWidget(self.index,0,self.shrtlabel)
            self.table1.setItem(self.index,1,QtGui.QTableWidgetItem(str(key)))
            keys = value.keys()
            values = value.values()

            if len(keys) == len(values):
                self.table1.setItem(self.index,2,QtGui.QTableWidgetItem(str(keys[0])))
                self.table1.setItem(self.index,3,QtGui.QTableWidgetItem(str(keys[2])))
                self.table1.setItem(self.index,4,QtGui.QTableWidgetItem(str(keys[1])))
                self.table1.setItem(self.index+1,2,QtGui.QTableWidgetItem(str(values[0][0])))
                self.table1.setItem(self.index+1,3,QtGui.QTableWidgetItem(str(values[2][0])))
                self.table1.setItem(self.index+1,4,QtGui.QTableWidgetItem(str(values[1][0])))
                self.table1.setItem(self.index+2,2,QtGui.QTableWidgetItem(str(values[0][1])))
                self.table1.setItem(self.index+2,3,QtGui.QTableWidgetItem(str(values[2][1])))
                self.table1.setItem(self.index+2,4,QtGui.QTableWidgetItem(str(values[1][1])))
                self.index +=3

        self.inventr_gridbox.addWidget(self.table1,1,0)
        self.setCentralWidget(self.Inventory_scrollarea)

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    settingobj= Inventory_items()
    settingobj.showFullScreen()
    sys.exit(app.exec_())

在此处输入图片说明

在这里我只想显示项目的边框,而不是下面的描述项目

永乐

数据的结构是树的结构,因此您应该使用QTreeView或QTreeWidget,然后可以使用委托设置边框:

from PyQt4 import QtCore, QtGui

class InventoryDelegate(QtGui.QStyledItemDelegate):
    def paint(self, painter, option, index):
        super(InventoryDelegate, self).paint(painter, option, index)
        if not index.parent().isValid():
            painter.save()
            painter.setPen(QtGui.QPen(QtGui.QColor("green")))
            r = QtCore.QRect(option.rect)
            r.adjust(0, 1, 0, -1)
            painter.drawLine(r.topLeft(), r.topRight())
            painter.drawLine(r.bottomLeft(), r.bottomRight())
            painter.restore()

    def sizeHint(self, option, index):
        s = super(InventoryDelegate, self).sizeHint(option, index)
        s.setHeight(55)
        return s

class Inventory_Items(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Inventory_Items, self).__init__(parent)
        self.inventory_dict = {
            "Shirt": {
                "Men Solid Formal Blue shirt": ["10.10.1(Red)", "10.10.2(blue)"],
                "Discount:0%": ["300", "400"],
                "Unit:Quantity": ["10", "5"]
            },
            "Frocks": {
                "Baby Girls Partywear Frock": ["10.10.1(pink)", "10.10.1(black)"],
                "Discount:0%": ["900", "1200"],
                "Unit:Quantity": ["50", "30"]
            },
            "Shoes": {
                "Sparx Men's Running Shoes": ["Navy Blue", "Orange color"],
                "Discount:0%": ["2000", "2500"],
                "Unit:Quantity": ["100", "300"]
            },
            "Phones": {
                "Realme 2 Pro Smart phone": ["32 GB(4 GB RAM)", "64 GB(4 GB RAM)"],
                "Discount:0%": ["15000", "1800"],
                "Unit:Quantity": ["30", "10"]
            },
            "Perfume": {
                "Fugo Perfume": ["30ml", "60ml"],
                "Discount:0%": ["300", "600"],
                "Unit:Quantity": ["10", "3"]
            }
        }

        self.inventory_widget = QtGui.QTreeWidget(columnCount=7, 
            expandsOnDoubleClick=False,
            indentation=0,
            focusPolicy=QtCore.Qt.NoFocus,
            iconSize=QtCore.QSize(40,60))

        self.inventory_widget.setColumnWidth(2, 350)
        self.inventory_widget.setStyleSheet("QWidget {background-color: black;color: white;}")
        header = self.inventory_widget.header()
        header.hide()
        header.setResizeMode(0, QtGui.QHeaderView.ResizeToContents)
        header.setResizeMode(1, QtGui.QHeaderView.ResizeToContents)
        header.setResizeMode(2, QtGui.QHeaderView.Stretch)
        header.setResizeMode(3, QtGui.QHeaderView.Stretch)
        header.setResizeMode(4, QtGui.QHeaderView.Stretch)
        header.setResizeMode(5, QtGui.QHeaderView.ResizeToContents)
        header.setResizeMode(6, QtGui.QHeaderView.ResizeToContents)

        delegate = InventoryDelegate(self.inventory_widget)
        self.inventory_widget.setItemDelegate(delegate)

        for key, value in self.inventory_dict.items():
            icon = QtGui.QIcon("./{}.png".format(key))
            it = QtGui.QTreeWidgetItem()
            self.inventory_widget.addTopLevelItem(it)
            it.setIcon(0, icon)
            k = list(value.keys())
            for i, t in enumerate([key] + k):
                it.setText(i+1, t)

            e = [[] for _ in value[k[0]]]
            for k, v in value.items():
                for i, val in enumerate(v):
                    e[i].append(val)
            for r in e:
                child = QtGui.QTreeWidgetItem()
                for i, e_ in enumerate(r):
                    child.setText(i+2, e_) 
                    it.addChild(child)  
        self.inventory_widget.expandAll()
        self.setCentralWidget(self.inventory_widget)

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    settingobj= Inventory_Items()
    settingobj.showFullScreen()
    sys.exit(app.exec_())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

pyqt:如何删除小部件?

如何为Matplotlib小部件(navBar / canvas)设置PyQT4样式表?

如何使用javascript删除表格中的特定行?

在PyQt中删除小部件和布局

如何在PyQt5的表格小部件中连接CheckBox单击的信号?

如何获取小计量,即根据在pyqt4中的qtable小部件的数量微调框中给定的用户?

使用PyQt4或PySide捕获屏幕,特定的小部件除外?

在QGridLayout中删除后如何添加小部件行

如何使用pyqt4在滚动区域小部件中打开和保存文件

如何使用pyqt4刷新小部件中的内容?

如何使用pyqt4在列表小部件中搜索项目

如何删除TradingView小部件JS中的特定工具?

如何在Flutter中删除堆栈中的小部件的内部边框?

我如何使用pyqt4将不同的背景颜色应用于树小部件中父文本的每一行

在PyQt5中删除小部件时如何删除空白

通过从在PyQt4中使用QSplitter()设置的按钮调用来删除窗口小部件

从表格中删除特定的小部件

R闪亮:删除表格中的特定行边框

PyQT4日期时间小部件

如何删除QtString中的错误。我正在使用pyqt4和Python 3.4.3

PyQt4-使用QItemDelegate在QListView中显示小部件

PyQt4:如何向中央小部件添加两个对象并显示两个视频

PyQt4 Python中的marge小部件

pyqt4 将图像设置为中央小部件

如何将行编辑中的所有输入文本显示到pyqt4中的文本编辑小部件

如何在使用 pyqt4 的 gridlayout 中增加特定按钮的大小

如何使用 pyqt4 制作闪烁的标签或小部件

从小部件中删除边框

删除 tkinter 中的特定小部件