2012-03-29 13 views
8

Dies scheint eine dumme Frage zu sein, aber ist es möglich, die Höhe einer ttk-Schaltfläche manuell zu ändern?Ändern der Höhe der ttk-Schaltfläche in Python

Etwas wie button = tkinter.Button(frame, text='hi', width=20, height=20...) funktioniert gut für eine Tkinter-Taste. Allerdings würde ich lieber einen ttk-Knopf verwenden, da er ästhetisch viel besser aussieht.

button = ttk.Button(frame, text='hi', width=20, height=20...) funktioniert nicht, Höhe scheint keine gültige Option zu sein. Ich habe versucht, es mit config zu setzen oder nach Elementen im Stil zu suchen, um zu ändern, und habe kein Glück gehabt.

Gibt es eine einfache Lösung? Ich benutze Python 2.7, Windows für den Rekord. Tut mir leid, das scheint eine Art triviale Frage zu sein, aber ich habe mich ohne viel Glück umgesehen.

Antwort

5

Um Ihre Frage direkt zu beantworten, nein, Sie können dies nicht tun. Der ganze Sinn von Themenknöpfen besteht darin, eine einheitliche Größe zu liefern.

Das heißt, es gibt viel Platz für Out-of-the-Box-Denken. Beispielsweise können Sie die Schaltfläche in einen Rahmen packen, die Geometrieausbreitung für den Rahmen deaktivieren (sodass die Größe des Rahmens die Größe der Schaltfläche steuert und nicht umgekehrt) und dann die Größe des Rahmens auf den gewünschten Wert festlegen.

Oder versuchen Sie, ein transparentes Bild auf die gewünschte Höhe zu legen, und verwenden Sie dann die Option compound, um das Etikett über das unsichtbare Bild zu legen.

Oder erstellen Sie ein benutzerdefiniertes Thema, das Padding verwendet, um die gewünschte Größe zu erhalten.

Schließlich können Sie den Knopf in ein Raster legen, es an allen Seiten "klebrig" halten und dann eine Min-Höhe für diese Zeile einstellen.

Natürlich, wenn Sie auf OSX sind, sind alle Wetten aus - es wirklich möchte Schaltflächen eine bestimmte Größe machen.

+0

Große fügt hinzu fügt, scheinen alle, wie potent Es ist eine gute Arbeitsumgebung. Vielen Dank. – user1301039

+0

Wird die Deaktivierung der Geometrieausbreitung und das Einhaken in einen Rahmen auch mit dem Gitter funktionieren? Ich habe es einmal versucht, aber ich konnte es nicht gut spielen. Vielleicht müssen Sie einen zweiten Versuch unternehmen. – Kumba

+0

@Kumba: Grid und Pack unterscheiden sich in dieser Hinsicht nicht - wenn Sie die Geometrieausbreitung deaktivieren, beeinflusst die Größe des untergeordneten Widgets nicht die Größe des enthaltenen Widgets. –

2

Nur ein Beispiel, wie @Bryan sagte: „Zum Beispiel können Sie die Taste in einen Rahmen packen“, ich habe es wie folgt aus:

import Tkinter as tk 
import ttk 

class MyButton(ttk.Frame): 
    def __init__(self, parent, height=None, width=None, text="", command=None, style=None): 
     ttk.Frame.__init__(self, parent, height=height, width=width, style="MyButton.TFrame") 

     self.pack_propagate(0) 
     self._btn = ttk.Button(self, text=text, command=command, style=style) 
     self._btn.pack(fill=tk.BOTH, expand=1) 
0

Das ist für mich gearbeitet:

my_button = ttk.Button(self, text="Hello World !") 
my_button.grid(row=1, column=1, ipady=10, ipadx=10) 

wo ipady und ipadx Pixel innerhalb der Schaltfläche im Gegensatz zu pady und padx die Pixel außerhalb der Schaltfläche

Verwandte Themen