Изменение высоты кнопки ttk в Python - PullRequest
9 голосов
/ 29 марта 2012

Это кажется глупым вопросом, но возможно ли вручную изменить высоту кнопки 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 для записи.Извините, это вроде тривиальные вопросы, но я огляделся без особой удачи.

Ответы [ 3 ]

6 голосов
/ 30 марта 2012

Чтобы прямо ответить на ваш вопрос, нет, вы не можете этого сделать. Весь смысл тематических кнопок в том, чтобы обеспечить одинаковый размер.

Как говорится, есть много места для нестандартного мышления. Например, вы можете упаковать кнопку в рамку, отключить распространение геометрии на рамке (чтобы размер рамки контролировал размер кнопки, а не наоборот), а затем установить размер рамки на то, что вы хотите.

Или попробуйте наложить прозрачное изображение на нужную вам высоту, а затем используйте параметр compound, чтобы наложить метку на невидимое изображение.

Или создайте собственную тему, которая использует отступы, чтобы получить нужный размер.

Наконец, вы можете поместить кнопку в сетку, сделать ее «липкой» со всех сторон, а затем установить минимальную высоту для этой строки.

Конечно, если вы используете OSX, все ставки выключены - он действительно хочет сделать кнопки определенного размера.

5 голосов
/ 14 августа 2015

Просто пример, как сказал @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)
1 голос
/ 16 февраля 2018

Это сработало для меня:

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

, где ipady и ipadx добавляет пиксели внутри кнопки, в отличие от pady и padx, которые добавляют пиксели вне кнопки

...