при изменении размеров окна на место кнопки становиться scale

Написал простой код, который изменяет размер окна, а потом возвращает его обратно при повторном нажатии на кнопку.

Но когда я добавил scale, то при нажатии на кнопку размеры менялись на размеры кнопки и по идеи при повторном нажатии должно было окно возвращаться обратно, но на место кнопки становился scale, вот код:

from tkinter import *
import tkinter as tk


class Demo:
    def __init__(self, root):
        self.flag = True
        self.root = root
        b = Button(root, text='close/open', command=lambda: self.clop(self.flag))
        b.place(x=0, y=0)

    def clop(self, flag):
        if self.flag:
            self.root.geometry("70x26")
        else:
            self.root.geometry("340x500+50+50")
        self.flag = not self.flag 
    
def load():
    print ("test")

root = tk.Tk()
root.geometry("340x500+50+50")
root.wm_attributes("-topmost", 1)
root.resizable(width=False, height=False)
root.overrideredirect(1)
b = Button(root, text='load settings', command=lambda: load())
b.place(x=260, y=470)

app = Demo(root)

def on_scroll(val):
    print(val)
scale = tk.Scale(root, from_=0, to=60, command=on_scroll, orient="horizontal")
scale.pack()

root.mainloop()

Ответы (1 шт):

Автор решения: S. Nick

попробуйте так:

from tkinter import *
import tkinter as tk


class Demo:
    def __init__(self, root):
        self.flag = True
        self.root = root
        b = Button(root, text='close/open', command=lambda: self.clop(self.flag))
        b.place(x=0, y=0)

    def clop(self, flag):
        if self.flag:
            self.root.geometry("70x26")
        else:
            self.root.geometry("340x500+50+50")
        self.flag = not self.flag 
    
def load():
    print ("test")
    
def on_scroll(val):                                                             # +++
    print(val)                                                                  # +++

root = tk.Tk()
root.geometry("340x500+50+50")
root.wm_attributes("-topmost", 1)
root.resizable(width=False, height=False)
root.overrideredirect(1)
b = Button(root, text='load settings', command=lambda: load())
b.place(x=260, y=470)

scale = tk.Scale(root, from_=0, to=60, command=on_scroll, orient="horizontal")  # +++
scale.pack()                                                                    # +++

app = Demo(root)

#def on_scroll(val):
#    print(val)
#scale = tk.Scale(root, from_=0, to=60, command=on_scroll, orient="horizontal")
#scale.pack()

root.mainloop()

введите сюда описание изображения

→ Ссылка