Динамически меняющиеся виджеты - PullRequest
0 голосов
/ 08 июля 2019

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

Например, нижний и верхний предел виджета масштаба нужно изменить, как толькоGUI запущен.

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

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

Есть лилучший способ сделать это, что я пропускаю, или я должен forget() сказал виджет и создать новый экземпляр виджета?

    import tkinter
    from tkinter import ttk
    from tkinter import *
    from tkinter.ttk import *

    def moveStuff():
        setres=5 
        mySlider=tkinter.Scale(root,from_=-45,to=45,resolution=setRes,
                         orient=tkinter.HORIZONTAL,bd=0)
        #mySlider.place(x=10,y=50)

    setres=1

    root = tkinter.Tk()
    root.title("Open file window")
    root.geometry("200x200")

    otherButton=tkinter.Button(root,text="MOVE STUFF",command=moveStuff)
    otherButton.pack()

    mySlider=tkinter.Scale(root,from_=-90,to=90,resolution=setres,
                     orient=tkinter.HORIZONTAL,bd=0)
    mySlider.place(x=10,y=100)

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

1 Ответ

1 голос
/ 08 июля 2019

Ваш импорт повсюду. А также, почему бы вам просто не изменить конфигурацию существующего слайдера вместо создания нового?

import tkinter as tk

def moveStuff():
    mySlider.config(from_=-45, to=45) #change slider max and min

setres=1

root = tk.Tk()
root.title("Open file window")
root.geometry("200x200")

otherButton=tk.Button(root,text="MOVE STUFF",command=moveStuff)
otherButton.pack()

mySlider=tk.Scale(root,from_=-90,to=90,resolution=setres,
                 orient=tk.HORIZONTAL,bd=0)
mySlider.place(x=10,y=100)

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