Welches GUI Framework für eigene Designs?

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.
Benutzeravatar
Jean-P.
User
Beiträge: 48
Registriert: Freitag 27. Januar 2012, 14:41
Wohnort: Berlin

Hallo,

bitte nicht erschrecken das ich noch ein Thema aufgemacht habe neben den 1000 die schon da sind :K

Aber meine Frage wird dort nicht beantwortet :cry:

Und zwar frage ich mich,
mit welchen Framework ich eigene Designs erstellen kann,
gemeint ist damit,
das ich nicht den Betriebssystem Look haben möchte,
sondern einen eigenes Designen wie zb. ICQ, Chrome, Winamp usw will.

Ich möchte meinen Usern auch mehrere Skins zur Auswahl bereitstellen 8)

Am liebsten wäre mir Tkinter, ist das damit möglich?

Und wenn ich schon mal dabei bin, wollte ich noch Fragen ob man die Zusatz Funktionen von QT in der Praxis brauch, oder ob man die Funktionen auch von anderen Anbietern nutzen kann?

Und eine Frage würde mich auch noch interessieren welches Framework hat die beste Performance,
ist QT viel schneller als Tkinter oder ist der unterschied nicht so groß?

Lerne Python eigentlich nur fürs Web aber wenn ich schon mal am lernen bin will ich auch gleich das richtige lernen 8)

gruß
kotz...
BlackJack

@Jean-P.: Ob `Tkinter` auf jedem System „theming” ermöglicht, weiss ich nicht, aber als allgemeines GUI-Toolkit würden mir da Widgets fehlen, die heutzutage eigentlich selbstverständlich sind.

Qt und Gtk kann man mit Themes versehen, wobei man im Auge behalten sollte, dass sich GUI-Toolkits um die Darstellung *innerhalb* eines Fensters kümmern. Für Rahmen und so etwas wie Titelleiste ist der Fenstermanager verantwortlich. Und der wird in der Regel vom Benutzer ausgewählt und konfiguriert. Da sollte man nicht drin herum pfuschen. Moderne Programme machen das eigentlich auch nicht mehr. Von Deinen genannten Beispielen ist das nur Chrome und die Google wird das nicht primär wegen der Optik gemacht haben, sondern weil sie den Browser möglichst systemunabhängig und grafisch gesehen schnell machen wollten. Auf der Ebene verplempert man aber als normaler Programmierer keine Zeit.

Welche Zusatzfunktionen von Qt meinst Du genau? Grundsätzlich ist das eine Entscheidung die jeder Programmierer selber treffen muss, in wie weit es ihm wichtiger ist, die Programmlogik davon frei zu halten. *Wenn* man die Qt-Bibliothek in der Programmlogik verwendet, dann sollte man auf jeden Fall auch die Qt-spezifische Funktionalität verwenden.

Was erwartest Du denn für Performance-Unterschiede bei GUI-Toolkits? Mal von Animationen abgesehen ist das doch nahezu egal, weil so ein Toolkit eigentlich immer gelangweilt auf den Benutzer wartet.
Benutzeravatar
Jean-P.
User
Beiträge: 48
Registriert: Freitag 27. Januar 2012, 14:41
Wohnort: Berlin

Hi BlackJack,

danke für deine Antwort :D

Oh je das hört sich ja gar nicht gut an,
was du mir da sagst :shock: ,
so etwas sollte doch normalerweise selbstverständlich sein,
jedes tolle Programm hat ein eigenes Design(Alle Adobe Produkte, einfach alle).

Mir ist es auf jeden Fall sehr wichtig das meine Programme einen eigenen Skin bekommen,
du sagst das du dir nicht sicher bist das Tkinter das auch bei allen Plattformen unterstürzt,
bei welcher bist du dir den sicher das es geht?

Also Tkinter wäre mir schon sehr wichtig,
da es zu Python gehört und keine Drittanbieter Module zusätzlich installiert werden müssen,
und wenn man mal Software verkaufen will,
muss man auch keine Lizenzgebühren an Nokia etc zahlen :?

Naja ich weiß von C++ das Qt so einige Funktionen hat zb. Netzwerk Sachen usw.
brauch man die überhaupt in Python?
Stell mir das bisschen blöd vor wenn ich 1000 Funktionen die ich nicht brauch immer mitliefern muss :K
kotz...
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Jean-P. hat geschrieben:Mir ist es auf jeden Fall sehr wichtig das meine Programme einen eigenen Skin bekommen
Wieso? Ich würde mir erst wenn die Funktionalität vollkommen ausgereift ist, Gedanken über sowas machen.
Was solls denn überhaupt werden wenn ich fragen darf.
Jean-P. hat geschrieben:und wenn man mal Software verkaufen will,
muss man auch keine Lizenzgebühren an Nokia etc zahlen :?
Komm erstmal so weit Software verkauft zu bekommen.
Jean-P. hat geschrieben:Stell mir das bisschen blöd vor wenn ich 1000 Funktionen die ich nicht brauch immer mitliefern muss :K
Ja, vom Verringern des Funktionsumfangs wirst du natürlich sehr viel Performance-Schub bemerken :mrgreen:
Rofl, als ob. Würdest du auf einer extremst limitierten Plattform programmieren, wo jedes bisschen an Geschwindigkeit zählt, dann vielleicht, aber dafür würdest du wohl kaum auf Python mit eigens angepasster GUI setzen.
Benutzeravatar
snafu
User
Beiträge: 6894
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hinsichtlich Qt gibt es QStyle, sowie QCommonStyle. Zudem existiert QProxyStyle, was jedoch in keinem der beiden Python-Wrapper (PyQt und PySide) implementiert ist, also aus der Überlegung rausfallen dürfte (ggf baut man das nach).

Falls du wirklich planst, etwas ganz stylisches zu machen, ist vielleicht das relativ neue Qt Quick einen Blick wert. Dazu gibt es Beispielcode für PySide, sowie die Beschreibung einer Art Workaround, da PySide es wohl momentan noch nicht out-of-the-box unterstützt. Ich finde Qt Quick recht spannend, habe es bisher aber noch nicht genutzt (steht aber auf meiner ToDo-Liste).

Vielleicht hilft dir ja was von den Links. :)
lunar

@snafu: "QStyle" kontrolliert, wie Steuerelemente gezeichnet werden, und mithin nur mittelbar, wie sie aussehen. Für einfache Oberflächenthemen ist QStyle zu aufwendig, man würde dafür Stylesheets nutzen, mit denen man unmittelbar beeinflussen kann, wie ein Steuerelement aussieht. Zudem erlauben Stylesheets auch Nutzern ohne Programmierkenntnisse, eigene Stile zu erstellen.

Der verlinkte Artikel beschreibt im Übrigen lediglich, wie man eine bestimmte QML-Bibliothek, die verschiedene hübsche Steuerelemente enthält, in PySide verwendet. Einen Workaround für ein spezielles Problem mit PySide und Qt Quick kann ich nicht erkennen, im Gegenteil, in C++ würde man genauso vorgehen.
Benutzeravatar
snafu
User
Beiträge: 6894
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Jean-P. hat geschrieben:Oh je das hört sich ja gar nicht gut an,
was du mir da sagst :shock: ,
so etwas sollte doch normalerweise selbstverständlich sein,
Naja, "selbstverständlich" ist wohl etwas übertrieben, aber der Trend geht allmählich schon etwas weg vom klassischen Design. Als Beispiele fallen mir die UIs für Smartphones ein, sowie diese neue hässliche Desktopumgebung für Ubuntu (wie hieß sie doch gleich...? :twisted: ).
Jean-P. hat geschrieben:Naja ich weiß von C++ das Qt so einige Funktionen hat zb. Netzwerk Sachen usw.
brauch man die überhaupt in Python?
Stell mir das bisschen blöd vor wenn ich 1000 Funktionen die ich nicht brauch immer mitliefern muss :K
Qt ist inzwischen (seit einigen Jahren) modular aufgebaut. Für viele Benutzeroberflächen reichen die Module QtCore und QtGui völlig aus.
Benutzeravatar
snafu
User
Beiträge: 6894
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

lunar hat geschrieben:Der verlinkte Artikel beschreibt im Übrigen lediglich, wie man eine bestimmte QML-Bibliothek, die verschiedene hübsche Steuerelemente enthält, in PySide verwendet. Einen Workaround für ein spezielles Problem mit PySide und Qt Quick kann ich nicht erkennen, im Gegenteil, in C++ würde man genauso vorgehen.
Dann habe ich wohl folgendes falsch verstanden:
This PySide tutorial takes an existing PySide QML application that uses a totally custom UI, and shows how such an UI can be transformed to use a pre-made component library. In the future, it will be useful to use Qt Quick Components, but as it’s not ready yet, we are using the open source Qt Quick Colibri [projects.developer.nokia.com] library.
Ich ging davon aus, dass dieses "not ready yet" sich auf PySide bezieht.
lunar

@snafu: Es bezieht sich auf "Qt Quick Components", ebenfalls eine Bibliothek mit Steuerelementen für Qt Quick.
Benutzeravatar
snafu
User
Beiträge: 6894
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ah, ok. Ich wusste nicht, dass "Qt Quick Components" nochmal ein Eigenname ist. Dachte halt eher an die Komponenten von Qt Quick... :oops:

Ach, wie auch immer. Ist jetzt nicht ganz so wichtig, das zu klären. :D
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Jean-P. hat geschrieben:Also Tkinter wäre mir schon sehr wichtig,
da es zu Python gehört und keine Drittanbieter Module zusätzlich installiert werden müssen,
Ich habe z.B. kein Tkinter installiert …
the more they change the more they stay the same
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dav1d hat geschrieben: Ich habe z.B. kein Tkinter installiert …
War das nicht so eine unsinnige Eigenart von Debian?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Hyperion hat geschrieben:
Dav1d hat geschrieben: Ich habe z.B. kein Tkinter installiert …
War das nicht so eine unsinnige Eigenart von Debian?
Der "Unsinn" hat den Hintergrund Python ohne X-Dependencies installieren zu koennen. Das macht auch bei anderen Distributionen Sinn.
lunar

@cofi: Und warum? Ich meine, was ist der konkrete Vorteil daran, ein paar MB X11-Client-Bibliotheken nicht installieren zu müssen?
BlackJack

@lunar: Es gibt Systeme auf denen man Python haben möchte, wo aber tatsächlich jedes MiB zählt. Router zum Beispiel wo man mit wenigen MiB Flash für das System auskommen muss. Da Python oft schon zum Grundsystem gehört, würden auch die X-libs und Tk und alles was davon jeweils wieder abhängt zum Grundsystem gehören.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Das Problem hierbei ist ja nicht, dass es durchaus Szenarien geben kann, in denen eine abgespeckte Variante von Python sinnvoll ist, sondern dass es hierfür keine Spezifikation gibt. Wenn ein Anfänger hört, dass es als eingebaute GUI bereits Tk gibt, dann ist es für ihn sicherlich hinderlich, wenn er es dann bei sich nicht "findet". Wenn eine Sprache "Batteries included" anbietet, dann sollte das Standard-Paket diese auch enthalten. Der Spezialfall wäre imho hier die abgespeckte Variante.

Oder gibt es doch offizielle Spezifikationen bezüglich des Umfangs eines Paketes, welches sich "Python" nennen sollte?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

@BlackJack: Wenn wirklich jedes MiB zählt, wird man kaum ein unverändertes Debian verwenden... schließlich hat schon ein normaler Standardkernel mit allen Modulen ein paar Dutzend MiB.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Hyperion hat geschrieben:
Dav1d hat geschrieben: Ich habe z.B. kein Tkinter installiert …
War das nicht so eine unsinnige Eigenart von Debian?
Wieso unsinnig?
Ich habe es auf meinem Archlinux nicht installiert und habe es bis jetzt auch nicht nachinstallieren müssen (auch kein tcl/tcltk). Selbst auf Windows muss man nur einen Haken bei der Installation entfernen im Tkinter zu überspringen.

//Edit: @lunar http://www.emdebian.org/ - Das läuft bei mir auch unter dem Begriff "Debian".
the more they change the more they stay the same
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dav1d hat geschrieben: Wieso unsinnig?
Das solltest Du doch mittlerweile aus den Postings von mir und lunar heraus gelesen haben, oder?
Dav1d hat geschrieben: Ich habe es auf meinem Archlinux nicht installiert und habe es bis jetzt auch nicht nachinstallieren müssen (auch kein tcl/tcltk). Selbst auf Windows muss man nur einen Haken bei der Installation entfernen im Tkinter zu überspringen.
Erkennst Du den Unterschied? ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Hyperion: Welchen Unterschied? Du willst nicht wirklich einen Installer für Python unter Windows mit dem installieren eines kompletten Linux vergleichen, wo dann nur für Python extra eine Nachfrage kommt und fragt ob man `Tkinter` mit installieren möchte, oder nicht!? Denn Python ist normalerweise ja schon bei der Grundinstallation dabei.
Antworten