Вопрос:

заполнить поле ввода в классе с помощью tkinter

python tkinter

114 просмотра

1 ответ

15 Репутация автора

Я пытаюсь вставить значение по умолчанию, которое будет отредактировано в поле ввода с помощью tkinter. Приведенное ниже решение работает, когда я удаляю его из класса, но не работает внутри класса. Моя конечная цель состоит в том, чтобы динамически обновлять это значение на основе результата из sql, но сначала мне нужно получить значение по умолчанию для отображения. Вот где у меня сейчас проблемы. Любое понимание того, что я пропускаю, очень ценится.

from tkinter import *
from tkinter.ttk import *

class Application(Frame):
    def __init__(self, master):
        Frame.__init__(self,master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):

        v = IntVar()
        self.JobNumber = Entry(self, width = 45, text = v  ) # Job Number 
        self.JobNumber.grid(row = 2, column = 0, columnspan = 1, rowspan = 1, sticky = W)
        v.set(100)

root = Tk()
app = Application(root)
root.mainloop()
Автор: DataGuy Источник Размещён: 10.04.2017 03:10

Ответы (1)


1 плюс

236189 Репутация автора

Решение

Проблема в том, что вы используете ttk, и ttkочень чувствительны к локальным переменным. В этом случае vлокальный и получает мусор.

Там нет необходимости использовать textvariable. Вы можете установить значение Entryвиджета, используя метод вставки:

self.JobNumber.insert(0, "this is the default value")

Если вы действительно чувствуете необходимость использования textvariable, убедитесь, что это не локальная переменная. Например:

self.v = IntVar()
...
self.v.set(100)
Автор: Bryan Oakley Размещён: 10.04.2017 04:11
Вопросы из категории :
32x32