Вы должны сделать это в коде xaml:
& lt; DataGrid ItemsSource = "{Список привязок}" [...] & gt; [...] & lt; / DataGrid & gt;
Я бы посоветовал вам использовать ObservableCollection
в качестве вашей поддержки, поскольку это будет распространять изменения в datagrid, поскольку оно реализует INotifyCollectionChanged
].
Проблема в том, что вы получаете значение виджета ввода до того, как пользователь имеет возможность ввести что-либо, поэтому он всегда будет пустой строкой.
Если вы ждете, чтобы сделать это до тех пор, пока пользователь ничего не введет, ваш код будет работать как есть. Хотя, я не вижу причин использовать StringVar
, поскольку он просто добавляет дополнительный объект, который не имеет реальной цели. Нет причин использовать StringVar
с виджетами входа, если вам не нужны дополнительные функции, которые получает StringVar
, а именно, переменные трассы.
Причина, по которой вы видите PY_VAR0
, заключается в том, что вы должны использовать метод get
, чтобы получить значение из экземпляра StringVar
. Измените ваше утверждение на print input1.get()
.
Чтобы получить содержимое вызова StringVar
get()
:
input1.get()
Кроме того, вы должны привязать ваш StringVar
к Entry
, иначе StringVar
не изменится с содержимым виджета Entry
:
entry1.config(textvariable=input1)
Или вы можете связываться при построении:
input1 = StringVar()
entry1 = tk.Entry(root1, textvariable=input1)