PyQt5: Weißer Strich zwischen Widgets [Windows]

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
xXSkyWalkerXx1
User
Beiträge: 198
Registriert: Mittwoch 27. Juni 2018, 17:39

Samstag 12. Januar 2019, 17:16

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
Sirius3
User
Beiträge: 9017
Registriert: Sonntag 21. Oktober 2012, 17:20

Samstag 12. Januar 2019, 18:52

@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.
xXSkyWalkerXx1
User
Beiträge: 198
Registriert: Mittwoch 27. Juni 2018, 17:39

Samstag 12. Januar 2019, 19:26

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).
Antworten