的整數如何獲得來自Tkinter的Entry
部件的整數類型?獲得從條目
如果我試圖讓使用variable_name.get()
值時,它說,這是一個str
。如果我嘗試使用int(variable_name.get())
更改類型,則表示int只能接受字符串或數字。
任何幫助將受到歡迎!
的整數如何獲得來自Tkinter的Entry
部件的整數類型?獲得從條目
如果我試圖讓使用variable_name.get()
值時,它說,這是一個str
。如果我嘗試使用int(variable_name.get())
更改類型,則表示int只能接受字符串或數字。
任何幫助將受到歡迎!
請看下面的例子從Tkinter的:
v = StringVar()
e = Entry(master, textvariable=v)
e.pack()
v.set("a default value")
s = v.get()
v是STRINGVAR類。嘗試做 - INT(STR(variable.get()))
但該類說variable.get應該回報你一個字符串。
Tkinter的入口有一個默認的文本值,如果不是整數的數據可能是一個問題。
當你在你的問題中說「變量」時,你指的是StringVar
的實例還是對小部件本身的引用?
如果你有到窗口小部件的引用,您可以使用條目的get
方法。這將返回一個字符串,然後可以傳遞給int
功能:
s = e.get()
i = int(s)
如果這不能解決你的問題,你可以提供一些工作代碼,準確顯示您所遇到的問題?
我碰到了同樣的問題最近。我有一個小方法運行:
newSave = self.EntryDict[key].get
try:
int(newSave)
bool = True
except ValueError:
bool = False
而我得到了錯誤,你正在描述它只能接受一個字符串或數字。 而我的問題是,我的.get沒有括號。在我把.get()一切工作之後。我認爲這可能也是你的問題。但沒有看到你的任何代碼,我無法確定。
我是Tkinter的新手,也面臨同樣的問題。我認爲問題是Entry字段的默認值是一個空字符串,不能轉換爲整數。
我建議你嘗試添加一個if語句來檢查的話:
if variable.get() != '':
other_variable = int(variable.get())
據我所知,這個問題是舊的,但這個工作對我來說,我想我會分享。
此代碼不安全。如果@int()@轉換失敗,則需要捕獲可能的@ ValueError @異常。 – rbaleksandar 2017-07-20 05:18:30
最後我只是初始化變量tk.IntVar()
,而不是tk.StringVar()
這樣,你不必強制轉換爲一個int,它永遠是一個,從輸入元素的默認值將現在是0
而不是''
這就是我走近它,無論如何,似乎最簡單的方法,避免了很多你需要不這樣做驗證的需要...
int(str(variable.get()))
我試試這個,現在它工作。
歡迎來到StackOverflow。你是否可以更加精確地回答這個問題,爲什麼在提問6,5年後回答這個問題並且回答了這個問題?如果您對問題有新的認識,您的答案將會很有意思,例如當你的解決方案特定於更新版本的'TkInter'時。最後,爲了視覺上的原因,用反引號來包圍你的代碼 – 2017-04-20 19:32:51
變量的值是多少? – pyfunc 2010-11-16 21:44:32
你能看到str(variable.get())的值嗎?雖然這應該是不必要的,因爲v.get應該返回一個字符串。 – pyfunc 2010-11-16 21:58:16
如果'variable'是一個'StringVar','int(variable.get())'應該可以工作。你得到什麼'print repr(variable.get())'還有'print type(variable.get())'? – 2010-11-16 22:01:05