Skip to main content

PyQt QTableWidget for image file explorer

Project description

pyqt-image-file-explorer-table-widget

PyQt QTableWidget for image file explorer

Requirements

PyQt5 >= 5.8

Setup

python -m pip install pyqt-image-file-explorer-table-widget

Included Packages

Feature

  • Being able to set column count with setColumnCount(columns: int)

  • Being able to remove selected cells with removeSelectedCells()

  • Set cell padding with setCellPadding(padding: int). No padding by defeault.

  • Set cell margin (set space between cells) with setCellMargin(margin: int) - This doesn't give the space between cells, just looks like it. I will figure it out how to set the space between cells properly. No margin by default.

  • Resize friendly

  • If you want to add grid(no grid by default), use setShowGrid(f: bool) even though this is provided by QTableWidget originally.

  • showTinyImageBigger(f: bool) to expand image which is so small that it's hard to see

Example

import os



from pyqt_image_file_explorer_table_widget.imageFileExplorerTableWidget import ImageFileExplorerTableWidget

from PyQt5.QtWidgets import QWidget, QPushButton, QHBoxLayout, QGridLayout, QFileDialog, QApplication





class ImageFileExplorerExample(QWidget):

    def __init__(self):

        super().__init__()

        self.__initUi()



    def __initUi(self):

        self.__tableWidget = ImageFileExplorerTableWidget()



        addBtn = QPushButton('Add')

        addBtn.clicked.connect(self.__add)



        delBtn = QPushButton('Remove')

        delBtn.clicked.connect(self.__delete)



        lay = QHBoxLayout()

        lay.addWidget(addBtn)

        lay.addWidget(delBtn)

        lay.setContentsMargins(0, 0, 0, 0)



        btns = QWidget()

        btns.setLayout(lay)



        self.__tableWidget.setColumnCount(6)



        lay = QGridLayout()

        lay.addWidget(btns)

        lay.addWidget(self.__tableWidget)

        lay.setContentsMargins(0, 0, 0, 0)



        self.setLayout(lay)



    def __add(self):

        dirname = QFileDialog.getExistingDirectory(self, 'Open directory', '')

        if dirname:

            filenames = [os.path.join(dirname, filename) for filename in os.listdir(dirname)]

            filenames = list(filter(lambda x: os.path.splitext(x)[-1] in ['.png'],

                                    [filename for filename in filenames])) # In this example, png only

            self.__tableWidget.addCells(filenames)



    def __delete(self):

        self.__tableWidget.removeSelectedCells()





if __name__ == "__main__":

    import sys



    app = QApplication(sys.argv)

    imageFileExplorerExample = ImageFileExplorerExample()

    imageFileExplorerExample.show()

    app.exec_()

Result

image

After select add.png, addTab.png, bold.png and remove all of them

image

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page