Seite 1 von 1

Gehen die border-styles nicht überall?

Verfasst: Dienstag 29. August 2017, 15:02
von Alfons Mittelmeyer
Ich habe einen Pi3 und pyqt5.

Da habe ich mal die border stile für einen Label probiert. Aber ridge, outset, inset und groove gehen nicht. Woran könnte das liegen?

Bild

Anmerkung: wenn ich pyqt5 starte bekomme ich immer diese Meldung: libEGL warning: DRI2: failed to authenticate

Habe ich vielleicht etwas nicht installiert?

Verfasst: Dienstag 29. August 2017, 18:59
von Alfons Mittelmeyer
Sieht so aus, als ob da etwas fehlt. Es könnten images für die borders sein, die da fehlen. Vielleicht etwas nicht installiert?

Re: Gehen die border-styles nicht überall?

Verfasst: Dienstag 29. August 2017, 19:58
von Alfons Mittelmeyer
Naja, ich probier dann mal eine Installation von Source Code

Re: Gehen die border-styles nicht überall?

Verfasst: Dienstag 29. August 2017, 22:31
von Alfons Mittelmeyer
Ich glaube ich lasse das mit dem Raspberry sein. Zwei Tage Compilierzeit, dazu habe ich keinen Bock. Vielleicht später mal, ein neues Raspberry Image mittels Crosscompiling machen.

Es lag an etwas anderem. Und qt modern?

Verfasst: Mittwoch 30. August 2017, 08:03
von Alfons Mittelmeyer
Damit diese Border Stile ein sinnvolles Resultat liefern muss border-color sinnvoll gesetzt sein.

Berauschend ist das Resultat allerdings nicht:

Bild

Hier bei background-color '#d9d9d9' und border-color '#8f8f91'

Im Vergleich dazu tkinter:

Bild

Das ist klar und deutlich zu sehen. Weiß jetzt auch nicht, wieso das jetzt in qt wesentlich 'moderner' sein soll und tkinter 'altmodisch' sei.

Man kann natürlich in qt schöner gestalten, etwa abgerundete Ecken, Farbverlauf und border-images, wenn man sich mehr Mühe gibt.

Re: Gehen die border-styles nicht überall?

Verfasst: Mittwoch 30. August 2017, 08:53
von Alfons Mittelmeyer
Es sollte aber doch gehen:

Bild
Siehe: https://www.w3.org/TR/css3-background/#ridge

Muß man da dann die die 4 Seiten getrennt angeben?
border-top, border-right, border-bottom, border-left

Laut dieser Definition geht es aber doch nicht:

‘groove’
Looks as if it were carved in the canvas. (This is typically achieved by creating a “shadow” from two colors that are slightly lighter and darker than the ‘border-color’.)

Denn da heißt es 'slightly'

Re: Gehen die border-styles nicht überall?

Verfasst: Mittwoch 30. August 2017, 09:29
von Alfons Mittelmeyer
Man muss eben mit der Border Color etwas rumspielen, dann geht es noch ein wenig besser. Hier habe ich dann eine hellere Farbe genommen #b0b0b0

Bild

Schön wäre allerdings, wenn man die dunkle Schattenfarbe dunkler machen könnte. Bei outset und inset könnte man ja die Seiten getrennt setzen. Bei ridge und groove geht das allerdings nicht.

Das war mein erstes Qt Programm

Verfasst: Mittwoch 30. August 2017, 09:55
von Alfons Mittelmeyer
Das war mein erstes Qt Programm. Da bin ich noch ein Anfänger:

Code: Alles auswählen

#import tkinter as tk
import QtTk as tk

class Application(tk.Tk):
    def __init__(self,**kwargs):
        tk.Tk.__init__(self,**kwargs)
        
        self.title('Hello World')

        widget = tk.Label(self,text="none",relief='flat',bd=5, bg = '#d9d9d9', fg = 'black')
        widget.grid(row=0,column=0)

        widget = tk.Label(self,text="solid",relief='solid',bd=5, bg = '#d9d9d9', bordercolor = 'black', fg = 'black')
        widget.grid(row=0,column=1)

        widget = tk.Label(self,text="ridge",relief='ridge',bd=5, bg = '#d9d9d9', bordercolor = '#a8a8a8', fg = 'black')
        widget.grid(row=0,column=2)

        widget = tk.Label(self,text="outset",relief='raised',bd=5, bg = '#d9d9d9', bordercolor = '#b0b0b0', fg = 'black')
        widget.grid(row=1,column=0)

        widget = tk.Label(self,text="inset",relief='sunken',bd=5, bg = '#d9d9d9', bordercolor = '#b0b0b0', fg = 'black')
        widget.grid(row=1,column=1)

        widget = tk.Label(self,text="groove",relief='groove',bd=5, bg = '#d9d9d9', bordercolor = '#b0b0b0', fg = 'black')
        widget.grid(row=1,column=2)

Application().mainloop()

Re: Gehen die border-styles nicht überall?

Verfasst: Mittwoch 30. August 2017, 19:47
von noisefloor
Hallo,

was ist denn `QtTk` für ein Modul zur Anbindung von Python an Qt? Mir ist bis dato nur PyQt und PySide bekannt...

Gruß, noisefloor

Re: Gehen die border-styles nicht überall?

Verfasst: Mittwoch 30. August 2017, 21:48
von __deets__
Oh Gott du hast gefragt.... es ist natürlich der Versuch auch Qt mit seinem GUI-Builder zu verhackstücken.

Re: Gehen die border-styles nicht überall?

Verfasst: Donnerstag 31. August 2017, 00:15
von Alfons Mittelmeyer
noisefloor hat geschrieben:Hallo,

was ist denn `QtTk` für ein Modul zur Anbindung von Python an Qt? Mir ist bis dato nur PyQt und PySide bekannt...

Gruß, noisefloor
Das ist ein Modul, das habe ich aber nocht nicht fertig - sondern es steht noch am Anfang - welches tkinter durch Qt emuliert. Der Sinn wäre, tkinter Programme unter Qt auszuführen und dann auch deren GUI nach Qt zu konvertieren. Da ich auch fast die tcl/tk Konvertierung nach tkinter fertig habe, könnte man dann auch eine tcl/tk GUI nach Qt konvertieren.

Re: Gehen die border-styles nicht überall?

Verfasst: Donnerstag 31. August 2017, 06:34
von noisefloor
Hallo,
Oh Gott du hast gefragt...
Ja - hätte ja theoretisch auch ein C&P Fehler sein können.
Der Sinn wäre, tkinter Programme unter Qt auszuführen und dann auch deren GUI nach Qt zu konvertieren.
Aha, thx. Stell' ich mir zwar schwierig vor, weil Qt im Kern ja konzeptionell einige Sachen anders macht als Tk, aber gut. Jeder kann ja Projekte Programmieren, wie er lustig ist.

Machst du das danach auch für GTK, wenn du mit Qt fertig bist?

Gruß, noisefloor

Re: Gehen die border-styles nicht überall?

Verfasst: Donnerstag 31. August 2017, 07:47
von Alfons Mittelmeyer
noisefloor hat geschrieben:
Der Sinn wäre, tkinter Programme unter Qt auszuführen und dann auch deren GUI nach Qt zu konvertieren.
Aha, thx. Stell' ich mir zwar schwierig vor, weil Qt im Kern ja konzeptionell einige Sachen anders macht als Tk, aber gut. Jeder kann ja Projekte Programmieren, wie er lustig ist.

Machst du das danach auch für GTK, wenn du mit Qt fertig bist?

Gruß, noisefloor
Habe mich noch nicht entschieden, daraus ein Projekt zu machen. Zwischen tkinter und Qt gibt es doch konzeptionelle Unterschiede, man kann nicht einfach tkinter nach Qt konvertieren, sodass es dann genauso aussieht.

Da sind bei grid Unterschiede. Bei Qt beudetet rowStretch nicht, dass die Zeile nicht wächst. rowStretch 0 verhält sich also so, als ob in tkinter weight 1 gesetzt wäre. Dann gibt es Unterschiede beim sticky, das dann in Qt mit QAlignment nicht vollständig umzusetzen ist. Die Nord Süd Ausdehnung, wie etwa bei sticky 'nswe' gibt es da nicht. Man muss solche Sachen dann nachbearbeiten, indem man dann eben die Höhe der Widgets setzt oder die Größe des Grid Layouts anpaßt. Und auch beim Relief muß man nachbearbeiten, indem man eine passende border color ausfindig macht.

Vielleicht schaue ich mir als Nächstes auch mal GTK an, ob damit eine vollständigere Emulierung des Layouts möglich wäre.