Checkbox wird in tabelle unter MacosX falsch dargestellt

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Benutzeravatar
nieselfriem
User
Beiträge: 72
Registriert: Sonntag 13. Januar 2013, 16:00

Checkbox wird in tabelle unter MacosX falsch dargestellt

Beitragvon nieselfriem » Freitag 17. März 2017, 08:42

Hallo,

ich habe folgendes Problem.

Ich habe in einem Tabellenmodell mir für die Darstellung von Booleanwerte eine Checkbox als delegate eingerichtet.

  1. # coding=utf-8
  2.  
  3. from PyQt5.QtCore import *
  4. from PyQt5.QtGui import *
  5. from PyQt5.QtWidgets import *
  6.  
  7.  
  8. class CheckBoxDelegate(QItemDelegate):
  9.     def __init__(self, parent=None):
  10.         QItemDelegate.__init__(self, parent)
  11.         self.chkboxSize = 19  # ?!
  12.  
  13.     def createEditor(self, parent, option, index):
  14.         chkbox = QCheckBox(parent)
  15.         chkbox.setText('')
  16.         chkbox.setTristate(False)
  17.         left = option.rect.x() + (option.rect.width() - self.chkboxSize) / 2
  18.         top = option.rect.y() + (option.rect.height() - self.chkboxSize) / 2
  19.         chkbox.setGeometry(left, top, self.chkboxSize, self.chkboxSize)
  20.         return chkbox
  21.  
  22.     def paint(self, painter, option, index):
  23.         value = index.data()
  24.         opt = QStyleOptionButton()
  25.         opt.state |= QStyle.State_Enabled | (QStyle.State_On if value else QStyle.State_Off)
  26.         opt.text = ''
  27.         left = option.rect.x() + (option.rect.width() - self.chkboxSize) / 2
  28.         top = option.rect.y() + (option.rect.height() - self.chkboxSize) / 2
  29.         opt.rect = QRect(left, top, self.chkboxSize, self.chkboxSize)
  30.         QApplication.style().drawControl(QStyle.CE_CheckBox, opt, painter)
  31.  
  32.     def updateEditorGeometry(self, editor, option, index):
  33.         pass


diese habe ich dann wie folgt eingebunden

  1. self.dataTBL.setItemDelegateForColumn(2, CheckBoxDelegate(self.dataTBL))


Das funktioniert auch auf Windows und unter Linux so weit ganz gut. Nur unter MacOSX gibt es Darstellungsfehler. Die Checkbox wird nicht mehr in der Spalte 3 dargestellt sondern überdeckt das Datum der 1. Spalte. (siehe Screenshots) Was kann ich machen, dass es solche Darstellungsfehler vermeiden kann und wie behebe ich diesen?


Linux: https://www.dropbox.com/s/c1ci3l89fp4v4 ... p.png?dl=0
MacOs: https://www.dropbox.com/s/z9vm6qybnajx4 ... 1.png?dl=0
Windows: https://www.dropbox.com/s/ptfvfwo73oo21 ... 4.png?dl=0

VG niesel
jerch
User
Beiträge: 1622
Registriert: Mittwoch 4. März 2009, 14:19

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Beitragvon jerch » Freitag 17. März 2017, 23:35

@nieselfriem:
Schau mal, ob das Problem verschwindet, wenn Du explizit den Fusion-Style benutzt. In Qt 5.4 bis 5.6 war das ein bekannter Bug.
Benutzeravatar
nieselfriem
User
Beiträge: 72
Registriert: Sonntag 13. Januar 2013, 16:00

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Beitragvon nieselfriem » Samstag 18. März 2017, 14:33

Hi,

sagen wir es mal so. Die Checbox wird jetzt richtig dargestellt. Wenn man jedoch den Wert verändern will, dann kommt es zu diesem interessanten Fehler, dass man ein Dropdownmenü mit true und False präsentiert bekommt. :?

Die Frage, ist nun, wie kann man das QT auf einem Mac Updaten. Das ist ja schon so weit ich weiß vorinstalliert. Da dies nicht mein mac ist, sondern der meiner Freundin, kann ich nicht so wild schalten und walten wie ich will ;)

https://www.dropbox.com/s/nw2iwg844c5mzmq/Bildschirmfoto%202017-03-18%20um%2014.25.05.png?dl=0


VG niesel
Benutzeravatar
__deets__
User
Beiträge: 1331
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Beitragvon __deets__ » Samstag 18. März 2017, 17:21

Das waere dann der erste Mac der mir unterkommt, auf dem das vorinstalliert ist. Das wird entweder explizit per Installer installiert, oder ueber so etwas wie homebrew etc. als Paket. Wie das auf dem Mac deiner Freundin aussieht ist fuer mich aus naheliegenden Gruenden nicht ersichtlich ;)
Benutzeravatar
nieselfriem
User
Beiträge: 72
Registriert: Sonntag 13. Januar 2013, 16:00

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Beitragvon nieselfriem » Samstag 18. März 2017, 19:41

Laut Systeminformation ist folgendes installiert:

QTKit:

Version: 7.7.3
Erhalten von: Apple
Zuletzt geändert: 18.10.15, 03:26
Art: Intel
64-Bit (Intel): Ja
Signiert von: Software Signing, Apple Code Signing Certification Authority, Apple Root CA
Informationen: QTKit 7.7.3, Copyright 2003-2012, Apple Inc.
Ort: /System/Library/Frameworks/QTKit.framework
Privat: Nein


vg niesel
BlackJack

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Beitragvon BlackJack » Samstag 18. März 2017, 22:04

@nieselfriem: Das ist Apple's QuickTime. Hat nichts mit Qt zu tun. :-)
Benutzeravatar
nieselfriem
User
Beiträge: 72
Registriert: Sonntag 13. Januar 2013, 16:00

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Beitragvon nieselfriem » Montag 20. März 2017, 11:59

Ok, ich dachte nur, dass Apple das Framework anders benennt. Ich hatte das nach dieser Anleitung herausgesucht.

http://stackoverflow.com/questions/7912896/how-to-check-the-installed-qt-version-on-mac-os-x

Ber davon mal abgesehen, habe ich auf diesem Mac nur PyQT mit pip3 installiert. Das komplette Framework als DMG File habe ich da nicht herunterlgeladen. Weiß denn jemand, wie ich beim MC dann die Version des Framework ermittel?

VG niesel
Benutzeravatar
__deets__
User
Beiträge: 1331
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Checkbox wird in tabelle unter MacosX falsch dargestellt

Beitragvon __deets__ » Montag 20. März 2017, 12:36

Wenn das Programm laueft, kannst du dir im Activity Monitor anschauen, welche Bibliotheken alle geladen sind. Dazu auf "Info" klicken, und die geoeffneten Dateien anzeigen.

Sieht bei meinem flymake-Python vom Emacs gestartet zb so aus:

Code: Alles auswählen

cwd
/Volumes/untitled/cross-env/scripts
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/Python
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_locale.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_collections.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/operator.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/itertools.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_heapq.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/grp.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/time.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/select.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/fcntl.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_struct.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/binascii.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/cStringIO.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/strop.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/zlib.so
txt
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_functools.so
txt
/usr/lib/dyld
txt
/private/var/db/dyld/dyld_shared_cache_x86_64
0
/dev/ttys005
1
/dev/ttys005
2
/dev/ttys005
5
/Users/dir/Library/Saved Application State/org.gnu.Emacs.savedState/data.data
6
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/Extras2.rsrc
7
/System/Library/Frameworks/CoreImage.framework/ci_kernels.metallib
8
/private/var/folders/s_/0j3hmy3x2l799l9z2zglgn3r0000gr/C/org.gnu.Emacs/com.apple.metal/libraries.maps
9
/private/var/folders/s_/0j3hmy3x2l799l9z2zglgn3r0000gr/C/org.gnu.Emacs/com.apple.metal/libraries.data
10
/private/var/folders/s_/0j3hmy3x2l799l9z2zglgn3r0000gr/C/org.gnu.Emacs/com.apple.metal/AMD Radeon HD - FirePro D500/functions.maps
11
/private/var/folders/s_/0j3hmy3x2l799l9z2zglgn3r0000gr/C/org.gnu.Emacs/com.apple.metal/AMD Radeon HD - FirePro D500/functions.data
12
/Users/dir/Library/Saved Application State/org.gnu.Emacs.savedState/windows.plist
13
/Users/dir/Library/Saved Application State/org.gnu.Emacs.savedState/window_1.data
15
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/HIToolbox.rsrc
16
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/English.lproj/Localized.rsrc

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder