2014-01-22 94 views
1
from tkinter import * 
import tkinter as tk 
import pyodbc 

root1 = tk.Tk() 

label1 = tk.Label(root1, text='product A') 
entry1 = tk.Entry(root1) 

label1.pack(side = tk.TOP) 
entry1.pack() 
input1= StringVar() 
input1.set(entry1.get()) 
print (input1) 

此代碼用於將輸入文本框小部件的值分配給變量Input1。但是,我得到的值是:PY_VAR0而不是Entry1中的文本。Python-如何從tkinter小部件獲取值並將其分配給變量

我需要打印輸入文本。爲什麼會出現PY_VAR0?

請幫忙。

謝謝。

回答

2

問題是,在用戶有機會輸入任何內容之前,您已經獲得了輸入窗口小部件的值,所以它始終是空字符串。

如果您等待直到用戶輸入內容後才能執行此操作,則代碼將按原樣正常工作。雖然,我沒有看到任何理由使用StringVar,因爲它只是增加了一個沒有真正用途的額外對象。沒有理由將StringVar用於入口小部件,除非您需要StringVar可獲得的額外功能 - 即可變軌跡。

您看到的原因PY_VAR0是因爲您必須使用get方法從StringVar的實例中獲取值。將您的對帳單更改爲print input1.get()

3

要獲得StringVar呼叫get()的內容:

input1.get() 

此外,你應該綁定你StringVarEntry否則StringVar不會與Entry組件的內容將發生變化:

entry1.config(textvariable=input1) 

或者你可以在施工時綁定:

input1 = StringVar() 
entry1 = tk.Entry(root1, textvariable=input1) 
+0

謝謝!它按需要工作! – keshr3106

+0

在建設綁定也工作!謝謝! – keshr3106

+0

@downvoter:爲什麼? –

相關問題