ttk Style TScale

  • Moinsens!

    Ich hab meine Anwendung von vornherein auf ttk ausgelegt, weil ich mir von den Style-Möglichkeiten einiges versprochen habe. Was bei TLabel und TButton auch auf Anhieb geklappt hat, bereitet mir bei TScale Probleme. Dort gibt es ja die Unterscheidung in Horizontal und Vertical.

    Was ich bislang habe (auszugsweise):

    Wie gesagt: TButton und TLabel funktionieren damit bereits anstandslos. Nur beim TScale bekomme ich, wenn ich den "style= ..." angebe, eine Fehlermeldung:

    Code
    _tkinter.TclError: Layout Horizontal.miriki.TScale not found

    Ich schätze, das ist wieder nur irgendso eine Kleinigkeit mit einem fehlenden Buchstaben, Groß-/Klein-Schrift oder irgendwie sowas. Aber ich find's einfach nicht.

    Mag mir da mal jemand auf die Sprünge helfen?

    Gruß, Michael

  • Ich vermute das dein Theme einfach kein Horizontal orientierte Scale besitzt ...


    Wie kann ich das feststellen?

    Laut s.theme_names() habe ich ( 'clam', 'alt', 'default', 'classic' ), wovon s.theme_use() dann sagt, daß 'default' benutzt wird.

    Und müßte der Interpreter nicht bei
    s.configure( "Horizontal.miriki.TScale", background = bg, foreground = fg )
    bereits entweder meckern oder das Layout anlegen, wenn's nicht da wäre?

    Laut scl.winfo_class() benutzt das Scale 'TScale'. Und wenn ich mit s.configure die Werte von 'TScale' ändere, dann ändern sich auch die Farben in der Darstellung - wohlgemerkt, ohne daß ich Horizontal oder Vertical mit dazu angegeben hätte. Also, s.configure ändert die Farben mit:
    s.configure( "TScale", background = bg, foreground = fg )
    Es tut sich aber nichts, wenn ich "miriki.TScale" oder "Horizontal.miriki.TScale" benutze. Das funktioniert nur bei miriki.TLabel und miriki.TButton, weil ich denen im Nachhinein ja das custom-style zuweisen kann.

    Wenn ich mit
    ... style = "miriki.TScale"
    zuweisen will, erhalte ich die o.a. Fehlermeldung - Der Interpreter ergänzt also selbständig um das "Horizontal.". Wenn ich "Horizontal.miriki.TScale" zuweisen will, erhalte ich (wie erwartet) die Fehlermeldung, daß "Horizontal.Horizontal.miriki.TScale" nicht gefunden wird.

    Letztendlich wird das TScale wohl eh nicht das Widget meiner Wahl bleiben, zumindest nicht für den aktuellen Zweck. Anscheinend kann man den Schieber nur in einer (und aus meiner Sicht: der falschen) Richtung anpassen. Ich sehe z.Z. noch keine Möglichkeit, z.B. den vertikalen Schieber auf die volle Widget-Breite auszudehnen. Und wenn man das Fenster maximiert, sieht das ziemlich blöd aus, wenn da in einer breiten Spalte so ein kleines Schieber-Krümelchen hängt. Außerdem kriege ich nur den Schieber selbst mit fg eingefärbt. Der ganze Hintergrund scheint grau zu bleiben, auch wenn ich bg ändere. Da hab ich wohl noch irgendeine configure-Option bislang nicht gefunden.

    Gruß, Michael

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!