Как сделать кадры неизменяемыми - PullRequest
0 голосов
/ 16 апреля 2019

В моем фрейме есть кнопка «Добавить задачу», которая создает новый текстовый виджет для ввода текста, с добавлением текстовых виджетов рамка продолжает расширяться по вертикали

Я пытался использовать изменяемый размер (False(False), он показывает AttributeError: у объекта '_tkinter.tkapp' нет атрибута 'resizable'

class Container(tk.Frame):
    def __init__(self, parent = None, priority = 3, bg = 'bisque'):
        tk.Frame.__init__(self, parent)
        self.f = tk.Frame(parent)
        self.f.configure(bg = bg)
        self.f.pack(fill = 'both', expand = True)
        self.tk.resizable(False, False)

if __name__ == '__main__':
    window = tk.Tk()
    window.geometry('300x200-400+75')
    window.minsize(300, 600)

    p1 = Container(window, priority = 1)
    p2 = Container(window, bg = 'blue', priority = 2)
    p3 = Container(window, bg = 'red', priority = 3)

    window.mainloop()

1 Ответ

1 голос
/ 16 апреля 2019

Вы не можете использовать self.tk.resizable(False, False) для виджета фрейма, это только для главного окна.

Решение

Если вы просто хотите, чтобы размер фрейма не изменялся при добавлении виджетов в него, используйте self.propagate(0), это не позволит дочерним виджетам принять размер родительского элемента.

Но если вы хотите, чтобы размер главного окна не изменялся, используйте window.resizable(False, False)

Код

import tkinter as tk

class Container(tk.Frame):
    def __init__(self, parent = None, priority = 3, bg = 'bisque'):
        tk.Frame.__init__(self, parent)
        self.f = tk.Frame(parent)
        self.f.configure(bg = bg)
        self.propagate(0)
        self.f.pack(fill = 'both', expand = True)


if __name__ == '__main__':
    window = tk.Tk()
    window.geometry('300x200+400+75')
    window.minsize(300, 600)

    # Use this if you don't want the main window to be resizable.
    # window.resizable(False, False)

    p1 = Container(window, priority = 1)
    p2 = Container(window, bg = 'blue', priority = 2)
    p3 = Container(window, bg = 'red', priority = 3)

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