2010-11-16 45 views
4

的整數如何獲得來自Tkinter的Entry部件的整數類型?獲得從條目

如果我試圖讓使用variable_name.get()值時,它說,這是一個str。如果我嘗試使用int(variable_name.get())更改類型,則表示int只能接受字符串或數字。

任何幫助將受到歡迎!

+0

變量的值是多少? – pyfunc 2010-11-16 21:44:32

+0

你能看到str(variable.get())的值嗎?雖然這應該是不必要的,因爲v.get應該返回一個字符串。 – pyfunc 2010-11-16 21:58:16

+0

如果'variable'是一個'StringVar','int(variable.get())'應該可以工作。你得到什麼'print repr(variable.get())'還有'print type(variable.get())'? – 2010-11-16 22:01:05

回答

1

請看下面的例子從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的入口有一個默認的文本值,如果不是整數的數據可能是一個問題。

0

當你在你的問題中說「變量」時,你指的是StringVar的實例還是對小部件本身的引用?

如果你有到窗口小部件的引用,您可以使用條目的get方法。這將返回一個字符串,然後可以傳遞給int功能:

s = e.get() 
i = int(s) 

如果這不能解決你的問題,你可以提供一些工作代碼,準確顯示您所遇到的問題?

1

我碰到了同樣的問題最近。我有一個小方法運行:

newSave = self.EntryDict[key].get 
     try: 
      int(newSave) 
      bool = True 
     except ValueError: 
      bool = False 

而我得到了錯誤,你正在描述它只能接受一個字符串或數字。 而我的問題是,我的.get沒有括號。在我把.get()一切工作之後。我認爲這可能也是你的問題。但沒有看到你的任何代碼,我無法確定。

1

我是Tkinter的新手,也面臨同樣的問題。我認爲問題是Entry字段的默認值是一個空字符串,不能轉換爲整數。

我建議你嘗試添加一個if語句來檢查的話:

if variable.get() != '': 
    other_variable = int(variable.get()) 

據我所知,這個問題是舊的,但這個工作對我來說,我想我會分享。

+0

此代碼不安全。如果@int()@轉換失敗,則需要捕獲可能的@ ValueError @異常。 – rbaleksandar 2017-07-20 05:18:30

3

最後我只是初始化變量tk.IntVar(),而不是tk.StringVar()

這樣,你不必強制轉換爲一個int,它永遠是一個,從輸入元素的默認值將現在是0而不是''

這就是我走近它,無論如何,似乎最簡單的方法,避免了很多你需要不這樣做驗證的需要...

0
int(str(variable.get())) 

我試試這個,現在它工作。

+0

歡迎來到StackOverflow。你是否可以更加精確地回答這個問題,爲什麼在提問6,5年後回答這個問題並且回答了這個問題?如果您對問題有新的認識,您的答案將會很有意思,例如當你的解決方案特定於更新版本的'TkInter'時。最後,爲了視覺上的原因,用反引號來包圍你的代碼 – 2017-04-20 19:32:51