Seite 1 von 1

PyQt5: Weißer Strich zwischen Widgets [Windows]

Verfasst: Samstag 12. Januar 2019, 17:16
von xXSkyWalkerXx1
Also, in allen PyQt5 Programmen, die ich momentan über Windows schreibe, kommt ein weißer Strich zwischen den Widgets, aber nur wenn ein Bild als Hintergrund verwendet wird.
Woran liegt das / wie kann man das beheben?

Beispiel Code:

Code: Alles auswählen

from PyQt5.QtWidgets import QApplication, QSplitter, QMainWindow,QHBoxLayout, QFrame, QLabel
from PyQt5.QtCore import Qt
import sys

class Demo:
    def __main__(self):
        self.app = QApplication(sys.argv)
        self.window = QMainWindow()
        self.window.setWindowTitle("DEMO")
        self.window.setGeometry(700,400,550,300)

        self.frame = QFrame()
        self.layout = QHBoxLayout()
        self.label1 = QLabel("Der weiße...")
        self.label2 = QLabel("   STRICH!  ")

        self.frame.setStyleSheet('background-image: url("bg.jpg")') #zum Testen Bild ändern!
        self.label1.setStyleSheet('background: transparent')
        self.label2.setStyleSheet('background: transparent')

        self.layout = QHBoxLayout()
        self.split_widgets = QSplitter(Qt.Vertical)
        self.split_widgets.addWidget(self.label1)
        self.split_widgets.addWidget(self.label2)
        self.layout.addWidget(self.split_widgets)

        self.window.setCentralWidget(self.frame)
        self.frame.setLayout(self.layout)
        self.window.show()

_class = Demo()
ui = _class.__main__()
sys.exit(_class.app.exec_())

Danke im Vorraus!
Grüße, xXSkyWalkerXx1

Re: PyQt5: Weißer Strich zwischen Widgets [Windows]

Verfasst: Samstag 12. Januar 2019, 18:52
von Sirius3
@xXSkyWalkerXx1: da ich kein Windows habe, kann ich nichts zu weißen Strichen sagen.
Das Programm hat aber noch schwächen: Demo ist keine sinnvolle Klasse, was da in ___main__ steht und die letzten drei Zeilen gehören eigentlich in eine Funktion main. Doppelte Unterstriche sind für Python-Magische Methoden reserviert, __main__ ist das aber nicht. `_class` ist ein schlechter Variablenname, zu generisch. __main__ hat keinen Rückgabewert, `ui` ist also unnötig, wird aber auch gar nicht verwendet.

Re: PyQt5: Weißer Strich zwischen Widgets [Windows]

Verfasst: Samstag 12. Januar 2019, 19:26
von xXSkyWalkerXx1
Ich wollte nur auf die Schnelle ein Beispiel erzeugen, deshalb als Klassenname "Demo", das Gleiche mit "_class" - mir fiel auf die Schnelle kein besserer ein.
Sehe aber gerade, dass das "ui = " wegfallen müsste (außer das meintest bereits).

Re: PyQt5: Weißer Strich zwischen Widgets [Windows]

Verfasst: Sonntag 10. März 2019, 13:20
von xXSkyWalkerXx1

Code: Alles auswählen

from PyQt5.QtWidgets import QApplication, QSplitter, QMainWindow,QHBoxLayout, QFrame, QLabel
from PyQt5.QtCore import Qt
import sys

#ODER mit PySide:
#from PySide.QtWidgets import QApplication, QSplitter, QMainWindow,QHBoxLayout, QFrame, QLabel
#from PySide.QtCore import Qt


class Demo:
    def main(self):
        self.app = QApplication(sys.argv)
        self.window = QMainWindow()
        self.window.setWindowTitle("DEMO")
        self.window.setGeometry(700,400,550,300)

        self.frame = QFrame()
        self.layout = QHBoxLayout()
        self.label1 = QLabel("Der weiße...")
        self.label2 = QLabel("   STRICH!  ")

        self.frame.setStyleSheet('background-image: url("bg.jpg")') #zum Testen Bild ändern!
        self.label1.setStyleSheet('background: transparent')
        self.label2.setStyleSheet('background: transparent')

        self.layout = QHBoxLayout()
        self.split_widgets = QSplitter(Qt.Vertical)
        self.split_widgets.addWidget(self.label1)
        self.split_widgets.addWidget(self.label2)
        self.layout.addWidget(self.split_widgets)

        self.window.setCentralWidget(self.frame)
        self.frame.setLayout(self.layout)
        self.window.show()

_class = Demo()
ui = _class.main()
sys.exit(_class.app.exec_())

Keiner 'ne Idee warum da dieser weiße Strich ist? :D
Versuche gerade die Ursache zu finden, kann aber keine erkennen.

Allerdings konnte ich feststellen, dass dieser Strich nicht mehr vorhanden ist, sobald kein Hintergrundbild eingestellt ist.

Re: PyQt5: Weißer Strich zwischen Widgets [Windows]

Verfasst: Sonntag 10. März 2019, 13:58
von xXSkyWalkerXx1
GELÖST!

LÖSUNG: die Funktion "setHandleWidth(0)"