Skip to content

Qt for Python

For discussion and questions about Qt for Python (PySide & Shiboken)

3.3k Topics 14.6k Posts
  • This topic is deleted!

    Unsolved
    3
    0 Votes
    3 Posts
    33 Views
  • This topic is deleted!

    Unsolved
    1
    0 Votes
    1 Posts
    46 Views
    No one has replied
  • Segmentation fault after migrating to PySide2 from PyQT5

    Unsolved pyside2
    8
    0 Votes
    8 Posts
    2k Views
    D
    I have had the same error but with another library "libQt5Qml.so.5". I have tried various alternatives, and in my case, that error occurred when I executed a function in QML, which was supposed to create a custom component previously created in another directory, inside main.qml. In the end, the only thing that solved the problem was migrating to QT6. In my case, I was using PySide2, so switching from PySide2 to PySide6 solved the problem. Try using QT6 instead of QT5. Good Luck
  • Candlestick chart, varying bar width

    Unsolved
    1
    0 Votes
    1 Posts
    182 Views
    No one has replied
  • 0 Votes
    2 Posts
    560 Views
    JonBJ
    @hakonhagland For PyQt you will surely get answer from the PyQt mailing list if you do not elsewhere.
  • QTableWidget css selectors for last row and last column

    Solved
    2
    0 Votes
    2 Posts
    622 Views
    P
    Here is what i try: File: table.py: # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'table.ui' # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(400, 300) self.gridLayout = QtWidgets.QGridLayout(Dialog) self.gridLayout.setObjectName("gridLayout") self.tableWidget = QtWidgets.QTableWidget(Dialog) self.tableWidget.setFocusPolicy(QtCore.Qt.NoFocus) self.tableWidget.setStyleSheet("QHeaderView::section{\n" " padding:10px;\n" " background:rgb(155, 255, 148);\n" "}\n" "\n" "QHeaderView::section:horizontal{\n" " border:1px solid #ABABAB;\n" " border-left:none;\n" "}\n" "\n" "QHeaderView::section:vertical{\n" " border:1px solid #ABABAB;\n" " border-top:none;\n" "}\n" "\n" "QTableCornerButton::section{\n" " background:white;\n" " border:1px solid #ABABAB;\n" " border-left:none;\n" " border-top:none;\n" "}") self.tableWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.tableWidget.setShowGrid(False) self.tableWidget.setObjectName("tableWidget") self.tableWidget.setColumnCount(20) self.tableWidget.setRowCount(18) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(6, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(7, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(8, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(9, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(10, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(11, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(12, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(13, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(14, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(15, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(16, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(17, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(6, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(7, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(8, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(9, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(10, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(11, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(12, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(13, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(14, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(15, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(16, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(17, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(18, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(19, item) self.tableWidget.horizontalHeader().setHighlightSections(False) self.gridLayout.addWidget(self.tableWidget, 0, 0, 1, 1) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) item = self.tableWidget.verticalHeaderItem(0) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(1) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(2) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(3) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(4) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(5) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(6) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(7) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(8) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(9) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(10) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(11) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(12) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(13) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(14) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(15) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(16) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.verticalHeaderItem(17) item.setText(_translate("Dialog", "New Row")) item = self.tableWidget.horizontalHeaderItem(0) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(1) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(2) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(3) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(4) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(5) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(6) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(7) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(8) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(9) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(10) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(11) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(12) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(13) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(14) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(15) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(16) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(17) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(18) item.setText(_translate("Dialog", "New Column")) item = self.tableWidget.horizontalHeaderItem(19) item.setText(_translate("Dialog", "New Column")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Dialog = QtWidgets.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_()) File: run_me.py: from PyQt5 import QtWidgets, QtCore, QtGui from table import Ui_Dialog import os import sys class Run_me: def __init__(self): self.app = QtWidgets.QApplication(sys.argv) self.app.setStyle("Fusion") self.Dialog = QtWidgets.QDialog() self.ui = Ui_Dialog() self.ui.setupUi(self.Dialog) self.Dialog.show() self.ui.tableWidget.setItemDelegate(GridDelegate(self.ui.tableWidget)) sys.exit(self.app.exec_()) class GridDelegate(QtWidgets.QStyledItemDelegate): pen = QtGui.QPen(QtGui.QColor('#000000'), 1) def paint(self, qp, opt, index): qp.save() qp.setPen(self.pen) qp.setBrush(QtCore.Qt.NoBrush) lastRow = index.model().rowCount() - 1 lastCol = index.model().columnCount() - 1 if index.row() < lastRow and index.column() < lastCol: qp.drawLine(opt.rect.bottomLeft(), opt.rect.bottomRight()) qp.drawLine(opt.rect.topRight(), opt.rect.bottomRight()) elif index.row() == lastRow and index.column() == lastCol: pass elif index.row() == lastRow: qp.drawLine(opt.rect.topRight(), opt.rect.bottomRight()) elif index.column() == lastCol: qp.drawLine(opt.rect.bottomLeft(), opt.rect.bottomRight()) qp.restore() super().paint(qp, opt, index) if __name__ == "__main__": program = Run_me() Result: [image: e5407971-dd00-498f-8604-1608ee1bd967.png]
  • Use Signal in PySide or PyQt

    Solved
    4
    0 Votes
    4 Posts
    663 Views
    JonBJ
    @jiajintao I don't know whether this will, help but.... Your def updateText(self, text: str): is a public slot you have written. There are, effectively, always two ways a slot can be called: connect a signal to call the slot, slot called when signal emitted; or call the slot method directly, no signal/connection/emit. This is just the case with slots, they are normal methods which can be called directly as well as via signals. Which way you invoke them depends on context, e.g. when within the slot class you might call the slot directly when required without going via signals. OTOH, the "outside world" is more likely to raise a signal when something happens, and you will have done a connect to have the slot called. This helps keep the distinction/independence between the slot class and the rest of the program, so outside world does not need to know much about slot class implementation.
  • Hide bottom right borders in QTableWidget

    Unsolved
    2
    0 Votes
    2 Posts
    245 Views
    P
    bottom_corner_widget = QtWidgets.QWidget(self.main_self.ui_manage_proccesses_window.table) bottom_corner_widget.setStyleSheet("QWidget{background:"+self.main_self.default_background_color+";width:13px;height:13px;}") bottom_corner_widget.setFixedHeight(13) bottom_corner_widget.setFixedWidth(13) bottom_corner_widget.move(self.main_self.ui_manage_proccesses_window.table.width()-13,self.main_self.ui_manage_proccesses_window.table.height()-13) bottom_corner_widget.show() This code creates a helper widget which has parent the table, dimensions like scrollbar dimensions, background-color like QDialog background color and position to bottom right corner of the table. Result: [image: 6e84bbbb-0f97-4e0b-be69-608e9d74ce70.png]
  • Remote desktop connection unable to set Geometry

    Solved
    3
    0 Votes
    3 Posts
    293 Views
    P
    @JonB I don't know, but setting a minimum size (for example 500x500) in QMainWindow solve the issue.
  • [PyQt5] graphyview setdata() doesn't work after recieving a mount of data

    Solved
    6
    0 Votes
    6 Posts
    484 Views
    JonBJ
    @ugly_curry_garlic You would have to debug your code. See if you can discover where it "gets stuck". If you are using threads there is always a chance there will be a fault in your code.
  • QScrollArea stops limiting parent QDialog size

    Moved Unsolved
    3
    0 Votes
    3 Posts
    304 Views
    C
    @SGaist Thanks for your input. Can you clarify what you mean with "set the constraint"? Do you mean I need to limit the QScrollArea's width at some magic number? Because that's what I wanted to avoid. I was looking for a solution that allows auto-formatting, but not the way a QScrollArea does but rather the way a QWidget does it, so I get the QScrollArea behaviour in one direction and the QWidget behaviour in the other direction. And maybe clarification: Is this behaviour by design? I would kind of expect that a disabled scroll bar would not replicate the resizing behaviour as if a scroll bar was present, or is there a use case I am missing?
  • how to dynamically create 2 to 4 QTimers based on attributes in a json file

    Unsolved
    13
    0 Votes
    13 Posts
    989 Views
    H
    @jsulm Thanks! I used signal and slot and now they work well!
  • Checkbox and combobox in table cell

    Moved Unsolved checkbox table
    3
    0 Votes
    3 Posts
    694 Views
    jeremy_kJ
    @Pl45m4 said in Checkbox and combobox in table cell: @Gazi That is what delegates are for https://doc.qt.io/qt-6/qitemdelegate.html#details Assign the delegates where you have your boolean values The standard styled delegate for widget views handles Qt::CheckStateRole. The link doesn't go directly to the role. @Gazi At over 300 lines, this code snippet is waa[...]aay too large for a reasonable question. Please limit examples to the minimum required to explain the problem.
  • QTableView Multi-Selection

    Unsolved
    3
    0 Votes
    3 Posts
    1k Views
    R
    @SGaist Thank you for that tip. I am researching QItemSelectionModel now.
  • pyqtgraph repeate ticks on x axis

    Moved Unsolved
    3
    0 Votes
    3 Posts
    441 Views
    Z
    Hello, thanks for the link. I hope someone will responde because it seems that the group is not active. The last questions got no responde. Best regards
  • Qt in RHEL8 container

    Solved
    3
    0 Votes
    3 Posts
    578 Views
    S
    Hello, I asked around on some IRC channels, and we were able to conclude that I didn't have fonts installed on my container, which was making me not render my text. This solved my issue. I'm curious as to why there was no warnings, but PyQt5 may have eaten up those warnings or errors. For those wanting a solution, in your docker-compose.yaml file, add in: volume: - /usr/share/fonts/:/usr/share/fonts Or inside the docker run command, add the flag -v /usr/share/fonts/:/usr/share/fonts.
  • Image not loading using Designer and Pixmap

    Unsolved
    8
    0 Votes
    8 Posts
    1k Views
    SGaistS
    @artiekastle sure: follow the documentation :-)
  • This topic is deleted!

    Unsolved
    5
    0 Votes
    5 Posts
    48 Views
  • Memory can not release correctly because of using lambda as slot

    Solved
    16
    0 Votes
    16 Posts
    1k Views
    feiyuhuahuoF
    @JonB I add this self.action_bilinear.triggered.disconnect() in closeEvent, but just doesn't work.
  • How to change color of SVG icon

    Solved
    3
    0 Votes
    3 Posts
    3k Views
    JoeCFDJ
    @dschiller Did not see your post before. I use inkscape to change colors of my svg files when needed, not in the code.