Попытка получить значение из шкалы Tkinter и поместить его в ярлык

У меня есть небольшая программа Python, которая принимает значение шкалы Tkinter и помещает ее в метку.

#!/usr/bin/python from Tkinter import * class App: strval = StringVar() def __init__(self,master): frame = Frame(master) frame.pack() self.slide = Scale(frame, command = self.up, from_ = 1, to = 100) self.out = Label(frame, textvariable = self.strval) self.slide.pack() self.out.pack() def up(self,newscale): amount = str(newscale) self.strval.set(amount) root = Tk() app = App(root) root.mainloop() 

Когда я запускаю программу, она дает мне и сообщение об ошибке:

 Traceback (most recent call last): File "/Users/alex/Desktop/Python/Tkinter/scale_Entry.py", line 5, in <module> class App: File "/Users/alex/Desktop/Python/Tkinter/scale_Entry.py", line 7, in App strval = StringVar() File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/Tkinter.py", line 254, in __init__ Variable.__init__(self, master, value, name) File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/Tkinter.py", line 185, in __init__ self._tk = master.tk AttributeError: 'NoneType' object has no attribute 'tk' Exception exceptions.AttributeError: "StringVar instance has no attribute '_tk'" in <bound method StringVar.__del__ of <Tkinter.StringVar instance at 0x69f238>> ignored logout 

Я не слишком уверен, что происходит не так, и я полностью дергаюсь за Tk-интерфейс. Мне бы очень хотелось, чтобы кто-то мог объяснить, что я делаю неправильно.

One Solution collect form web for “Попытка получить значение из шкалы Tkinter и поместить его в ярлык”

Это происходит потому, что вы создаете StringVar перед созданием корневого элемента Tk. Если вы переместите оператор root = Tk() перед определением класса, вы увидите, как он работает так, как ожидалось.

Однако идеальным решением было бы написать его таким образом, чтобы вы не зависели от порядка, чтобы заставить его работать, поэтому я предлагаю вам создать StringVar в конструкторе:

 class App: def __init__(self,master): frame = Frame(master) frame.pack() self.strval = StringVar(frame) # ... 
  • Как выделить текст в текстовом виджете tkinter
  • Как правильно установить свойство липкой кнопки?
  • Внедрение матового полотна в графический интерфейс tkinter - график не отображается, но ошибка не возникает
  • Многопроцессорность Python перенаправляет stdout дочернего процесса на Tkinter Text
  • Как получить холст tkinter для динамического изменения размера окна?
  • Печать значений в определенное время с помощью Tkinter
  • Изображение не отображается на Tkinter
  • Как вы перекрываете виджеты / фреймы в python tkinter?
  •  
    Interesting Posts for Van-Lav

    Как эффективно читать большой (30GB +) TAR-файл с BZ2 JSON twitter-файлами в PostgreSQL

    Переместите весь элемент с помощью lxml.etree

    Почему unicode () использует str () для моего объекта только без кодировки?

    Перезагрузка модуля с именем NameError: имя 'reload' не определено

    Как распечатать сравнение двух многострочных строк в унифицированном формате diff?

    Какова история оператора импорта?

    Замена с использованием нескольких регулярных выражений или большего размера в Python

    Изображение глифа изображения Bokeh показывает изображение в обратном порядке

    Сохранять сортируемые выходные файлы ConfigParser

    multiprocessing.Pool: вызов вспомогательных функций при использовании опции обратного вызова apply_async

    Pyusb на окнах – нет доступных бэкэнд

    Создание службы на основе REST из схемы базы данных

    Определенный способ разбора алфавитно-цифровых CSV в Python с scipy / numpy

    SQLAlchemy подключается к SQLServer с использованием Windows Authenticaton с драйвером pymssql

    Почему мое значение переменной не передается блоку finally в python

    Python - лучший язык программирования в мире.