Pixmap alignment in QPushButtons.

Raymond Osborn rayosborn at mac.com
Sun Apr 26 20:16:02 BST 2020


I do nearly all my testing in conda environments, and as far as I can tell, the PyQt and Qt dependencies seem to require the versions to be nearly the same. I also don’t know if this is dependent on the MacOS version. The problems seem to coincide with the release of MacOS 10.13 (High Sierra) in 2017, so it might just be that the Qt developers didn’t keep up with some change in the Mac APIs after v5.10. However, the problems have now persisted for over two years through four PyQt versions, so I hope they are aware that this is still an issue.

Ray 

> On Apr 26, 2020, at 12:13 PM, Patrick Stinson <patrickkidd at gmail.com> wrote:
> 
> I recall posting or commenting on a Qt bug report about vertical alignment or something similar, but I can’t remember what it was.
> 
> Are you saying that this behavior occurs when changing to PyQt5-5.11 but using the same Qt version? If this is a bug and actually not expected behavior then my initial suspicion would be that it is a function of Qt and not PyQt5. 
> 
> Generally speaking, Qt is not the most stable and reliable framework out there. It’s pretty good, but I would say the philosophy tends toward the new versus the stable. I have been working with it for over 20 years and expect regression bugs whenever I update to a newer version.
> 
> 
>> On Apr 26, 2020, at 7:58 AM, Raymond Osborn <rayosborn at mac.com <mailto:rayosborn at mac.com>> wrote:
>> 
>> Since PyQt 5.11, the MacOS version of  PyQt5 appears to have had a number of issues, mostly to do with failing to repaint text boxes (e.g., see https://bugreports.qt.io/browse/QTBUG-68521 <https://bugreports.qt.io/browse/QTBUG-68521> and https://bugreports.qt.io/browse/QTBUG-68740 <https://bugreports.qt.io/browse/QTBUG-68740>). There were reports that this had been fixed by 5.12, but that has not been my experience. I haven’t had time to check on 5.14 yet. Everything seems to be fine on Linux, at least with 5.12. 
>> 
>> I am writing to ask if anyone has also experienced an issue with the alignment of pixmaps in QPushButtons. I have subclassed QPushButton with the following code:
>> 
>> class NXColorButton(QtWidgets.QPushButton):
>> 
>>     def __init__(self, parent=None):
>>         super(NXColorButton, self).__init__(parent)
>>         self.setFixedSize(20, 20)
>>         self.setIconSize(QtCore.QSize(12, 12))
>>         pixmap = QtGui.QPixmap(QtCore.QSize(12, 12))
>>         pixmap.fill(QtGui.QColor(QtCore.Qt.white))
>>         self.setIcon(QtGui.QIcon(pixmap))
>> 
>> In PyQt 5.9, this produced the following button on the right:
>> <Color Button PyQt 5.9.7.png>
>> 
>> In PyQt 5.14.2, it produces this:
>> <Color Button PyQt 5.14.2.png>
>> 
>> When I query the sizes, they agree with the values in the code, but although the pixel map is square, the QPushButton below it is clearly not 20x20. It’s rectangular for a start. I can make it nearly square if I increase the size to 30x30. For comparison, the QLineEdit box to the left is 21 pixels high.
>> 
>> I can write up a bug report but I wanted to find out if this is a known issue or easy to fix.
>> 
>>>> Ray Osborn
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20200426/9183a054/attachment.htm>


More information about the PyQt mailing list