Почему мои кнопки tkinter не соответствуют указанной мной ширине? - PullRequest
0 голосов
/ 23 октября 2018

так что у меня пока есть это рабочее приложение:

import tkinter as tk

class AppGui(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        # Set window size
        self.geometry("400x600")

        # Create main container frame
        self.cframe = tk.Frame(self,
            bg = "yellow",
            width  = 400,
            height = 600
        )
        self.cframe.place(x=0,y=0)

        # Draw the first page and move on
        self.Draw()

    def Draw(self):
        # Create top bar and label
        topbar = tk.Frame(self.cframe,bg="green",width=400,height=60)
        topbar.place(x=0,y=0)

        l = tk.Label(topbar,
            text = "TOP Title",
            bg   = "red"
        )
        l.place(x=200,y=30,anchor="center")


        # Create center container
        centerpanel = tk.Frame(self.cframe,bg="orange",width=400,height=480)
        centerpanel.place(x=0,y=60)

        # Create a one-pixel image
        pixel = tk.PhotoImage(width=1, height=1)

        # Create program select button group
        b_left = tk.Button(centerpanel,
            text   = "Left",
            image  = pixel, # This allows me to specify width in pixels.
            width  = 75,
            height = 50,
            compound = "c"
        )
        b_left.place(x=25,y=30)

        b_center = tk.Button(centerpanel,
            text   = "Center",
            image  = pixel, # This allows me to specify width in pixels.
            width  = 75,
            height = 50,
            compound = "c"
        )
        b_center.place(x=150,y=30)

        b_right = tk.Button(centerpanel,
            text   = "Right",
            image  = pixel, # This allows me to specify width in pixels.
            width  = 75,
            height = 50,
            compound = "c"
        )
        b_right.place(x=275,y=30)

if __name__ == "__main__":
    gui = AppGui()
    gui.mainloop()

В основном я хотел получить верхнюю панель с меткой, центральную панель с тремя кнопками рядом (с некоторыми отступами) инижняя полоса, которую я еще не реализовал.

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

Хаубер, чтобы заставить это работатьпришлось установить для всех кнопок width свойство равным 75 пикселям, чтобы они отображались в виде кнопок шириной 100 пикселей (измерено с помощью screenruler).

Этот графический интерфейс будет работать только нафиксированное оборудование, поэтому я хотел бы продолжать использовать менеджер place , чтобы по возможности размещать элементы в окне.

Итак, чтобы подвести итог: почему мои кнопки на 25 пикселей ширечем ширина, которую я им установил?

Использование Python 3 в Ubuntu 18.04 в случае, если это важно.

Спасибо

1 Ответ

0 голосов
/ 23 октября 2018

Окончательная ширина кнопки учитывает не только указанную ширину, но и любые отступы, которые могут быть установлены на кнопке.Поскольку вы полагаетесь на значение по умолчанию для отступа, оно, вероятно, не равно нулю.Добавьте padx=0, чтобы увидеть, как это влияет на вашу кнопку (например: b_right = tk.Button(..., width=100, padx=0).

. Другой вариант - использовать place, чтобы задать размер виджета. Просто добавьте width и heightпри вызове места (например: b_right.place(x=275,y=30, width=100), и это отменит настройки кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...