2012-03-29 190 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...)不起作用,高度似乎不是一個有效的選項。我試着用config來設置它,或者在風格中尋找元素來改變,並沒有任何運氣。

有沒有簡單的解決方案呢?我正在使用Python 2.7,Windows進行記錄。對不起,這似乎是一個微不足道的問題,但我環顧四周沒有太多的運氣。

回答

5

要直接回答你的問題,不,你不能這樣做。主題按鈕的重點在於提供統一的尺寸。

這就是說,有足夠的空間來開箱即用的想法。例如,您可以將按鈕打包到一個框架中,在框架上關閉幾何體傳播(因此框架的大小控制按鈕的大小,而不是相反),然後將框架的大小設置爲您想要的大小。

或者,嘗試在您想要的高度的按鈕上放置透明圖像,然後使用compound選項將標籤覆蓋在不可見圖像上。

或者,創建一個使用填充來獲得所需大小的自定義主題。

最後,你可以把按鈕放在一個網格中,使其對所有邊都「粘」,然後爲該行設置一個最小高度。

當然,如果你在OSX上所有的投注都關閉 - 它真的想要使按鈕具有特定的大小。

+0

大,這些都似乎是有效的好的工作。謝謝。 – user1301039 2012-03-30 14:00:32

+0

幾何傳播的禁用和粘貼到框架中是否也可以與網格協同工作?我嘗試過一次,但無法讓它發揮出色。可能需要再試一次。 – Kumba 2013-07-05 04:30:51

+0

@Kumba:網格和包在這方面沒有什麼不同 - 當您關閉幾何傳播時,子部件的大小不會影響包含部件的大小。 – 2013-07-05 11:35:12

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) 

其中ipadyipadx增加不像pady按鈕內部的像素和padx這增加了像素的按鈕之外