I am trying to code a message box that just pops up and says something and has a single button to close it however as I only have a small amount of text in the box the icon/image to the left of it is huge and looks bad. I want to know how to remove it. I am also having trouble making custom message boxes. Tutorials say that this is how you make a custom message box:
box = QMessageBox()
box.setText('text')
box.addButton(QPushButton('Close', self))
box.exec_()
However this just closes my program and returns a 1. My current code uses the about method of QMessageBox():
box = QMessageBox().about(self, 'About', 'This is a test Program')
However this has that large icon in the text window and I can't seem to do anything else to the box as it just stops the program and returns 1 again
I am in desperate need of some decent PyQt documentation. I can't seem to find documentation on much at all unless it is in C++. For instance I cannot seem to find any information of options other than question and about for QmessageBox. So if someone could also show me where some proper documentation lives it would prevent me asking too many questions here
Rather than PyQt documentation, it is better to directly use Qt documentation. You only need to switch your language mindset from Python to C++, there and back. It is not that difficult. :) See e.g. http://doc.qt.io/qt-4.8/qmessagebox.html#addButton or http://doc.qt.io/qt-4.8/qmessagebox.html#about I think this is very detailed documentation, unrivaled by most other frameworks.
Note that there are three overrides of
addButton()
. From the documentation it seems that you either need to pass two arguments tobox.addButton(QPushButton('Close', self), QMessageBox.RejectRole)
(you forgot the role!) or better, you use the override which uses standard buttons, then you only pass one argument:box.addButton(QMessageBox.Close)
.And one more tip for you: I also find it easier to debug my program with
PySide
thanPyQt
because unlikePyQt
,PySide
catches the exception, prints that to console and keeps running. WhilePyQt
usually just silently crashes leaving you clueless. Most of the time, I am using shimsQt.py
https://pypi.python.org/pypi/Qt.py/0.6.9 orqtpy
https://pypi.python.org/pypi/QtPy to be able to switch fromPyQt
toPySide
on the fly. It also allows switching betweenQt4
andQt5
bindings easily.