Форум сайта python.su
0
Пишу код
from tkinter import * root = Tk() root.geometry('250x120') root.resizable(False, False) s1 = Scale(root, sliderlength=20, orient=HORIZONTAL, length=180) s1.place(x=30, y=30) def sa(): if s1.get() == 0: pass def main(): root.mainloop() sa() if __name__ == '__main__': main()
Traceback (most recent call last):
File "C:/Users/123/PycharmProjects/untitled/delete.py", line 14, in <module>
main()
File "C:/Users/123/PycharmProjects/untitled/delete.py", line 12, in main
sa()
File "C:/Users/123i/PycharmProjects/untitled/delete.py", line 8, in sa
if s1.get() == 0:
File "C:\Users\123\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 3010, in get
value = self.tk.call(self._w, 'get')
_tkinter.TclError: invalid command name ".!scale"
Офлайн
72
Команда root.mainloop() должна быть самой последней командой, а у вас после неё идёт sa(). Получается, когда вы закрываете главное окно, вызывается функция sa() в то время, когда главного окна уже нет. Перепишите функцию main() так:
def main(): sa() root.mainloop()
Офлайн
0
Помогло! Спасибо!
Офлайн
13
можешь цикл ткинтера в отдельный поток запихнуть
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Офлайн