2012-03-29 65 views
8

これは愚かな質問のようですが、手動でttkボタンの高さを変更することは可能ですか?Pythonでttkボタンの高さを変更する

button = tkinter.Button(frame, text='hi', width=20, height=20...)のようなものは、tkinterボタンでうまく動作します。私はttkボタンを使うのが好きですが、それは美的にははるかに優れているからです。

button = ttk.Button(frame, text='hi', width=20, height=20...)は機能しません。高さは有効なオプションではないようです。私は設定でそれを設定しようとしたか、スタイルの要素を探して変更しようとしましたが、運がなかった。

これには簡単な解決策がありますか?私はPython 2.7、Windowsを使用しています。申し訳ありませんが、これは些細な質問のように思えますが、私は多くの運がなくても見回しました。

答えて

5

質問に直接答えるには、これを行うことはできません。テーマボタンの全体的なポイントは、均一なサイズを提供することです。

言われているように、アウトオブザボックスの考え方には十分な余地があります。たとえば、ボタンをフレームにパックし、フレーム上でジオメトリの伝播をオフにすることができます(フレームのサイズによってボタンのサイズが制御されます)ので、フレームのサイズを任意に設定します。

または、希望の高さのボタンに透明な画像を入れてから、compoundオプションを使用して、不可視画像の上にラベルをオーバーレイします。

または、パディングを使用して目的のサイズを取得するカスタムテーマを作成します。

最後に、ボタンをグリッドに配置し、すべての面に「粘着性」を付け、その行の最小高さを設定することができます。

もちろん、OSXをお使いの場合、すべての賭けはオフになります。実際には、はボタンを特定のサイズにしたいと考えています。

+0

グレートピクセルを追加しpadx、それらの全ては強力ように見えます良い仕事の周り。ありがとうございました。 – user1301039

+0

フレームへのジオメトリの伝播と貼り付けを無効にすることは、グリッドでも機能しますか?私は一度それを試してみましたが、うまくプレイすることができませんでした。もう一度試してみる必要があります。 – Kumba

+0

@Kumba:グリッドとパックはこの点で違いはありません。ジオメトリの伝播をオフにすると、子ウィジェットのサイズは含まれているウィジェットのサイズに影響しません。 –

2

ただ、たとえば、@Bryanは、「例えば、あなたがフレームにボタンをパックすることができます」と述べたように、私はこのようにそれをやった:

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

これは私の仕事:

my_button = ttk.Button(self, text="Hello World !") 
my_button.grid(row=1, column=1, ipady=10, ipadx=10) 
ipadyipadxpadyとは異なり、ボタン内のピクセルを追加し

、ボタンの外