2016-08-19 59 views
-1

我現在有一些非常簡單的代碼,現在我遇到了問題。無論輸入如何,Tkinter條目都會返回浮點值

root = Tk() 
label1 = Label(root, text ="Enter String:") 
userInputString = Entry(root) 
label1.pack() 
userInputString.pack() 
submit = Button(root,text = "Submit", command = root.destroy) 
submit.pack(side =BOTTOM) 
root.mainloop() 
print(userInputString) 

當我運行代碼的一切工作,我所期望的,除了

print(userInputString) 

在輸入打印輸入航空自衛隊將返回類似0.9355325

但它永遠不會是相同的值總是隨機的。

我在Windows 7機器上使用python 3.5和Eclipse Neon。

最終目標是在彈出的框中接受來自用戶的字符串,然後能夠將該值作爲字符串稍後使用。例如,它可能是需要修改或打開的文件路徑。

是條目不正確的部件,我應該使用這個?這裏的代碼是否有內在的錯誤?我是python的新手,沒有很多強大的編程經驗,所以我甚至不確定這是否設置了正確的字符串。

如果有人有任何想法,請提前致謝。

+2

首先,你要獲得什麼,即條目的文本,可以通過在'Entry'類型的對象上調用get方法獲得,在你的用例'userInputString'中。其次,'root.mainloop()'後面的代碼僅在窗口關閉後纔會執行。 – nbro

+0

您何時想使用輸入字段的字符串?如果您指定我可以嘗試給出具體的答案,否則我應該將此問題表明爲重複。 – nbro

+0

[Tkinter條目「get」函數可能重複沒有返回](http://stackoverflow.com/questions/10727131/tkinter-entry-get-function-is-returning-nothing) – nbro

回答

1

打印語句有兩個錯誤。首先,您打印小部件,而不是小部件中的文本。打印(小部件)打印str(小部件),這是小部件的tk路徑名。 '。'代表根窗口。接下來的整數是一個tkinter指定的小部件名稱。在目前的3.6,這將改爲「entry', so you would see ".條目」。

其次,你試試你破壞了小部件。root.destroy後,蟒蛇 Tkinter的包裝仍然存在後打印控件文本,但TK小工具,它裹走了以下工作在3.6,Win10

import tkinter as tk 
root = tk.Tk() 
label = tk.Label(root, text="Enter String:") 
entry = tk.Entry(root) 
def print_entry(event=None): 
    print(entry.get()) 
entry.bind('<Key-Return>', print_entry) 
entry.focus_set() 
submit = tk.Button(root, text="Submit", command=print_entry) 
label.pack() 
entry.pack() 
submit.pack() 
root.mainloop() 

獎勵1:我將焦點設置到輸入框因此可以開始不跳格的盒子或點擊它打字

獎勵2:我綁定了密鑰提交功能,這樣可以不使用鼠標提交。請注意,該命令然後需要一個「事件」參數,但它必須默認爲無與按鈕一起使用它。

我經常使用的NMT Reference相當完整,大部分都是正確的。

相關問題