2017-08-19 104 views
1

我有一些相當簡單的代碼來獲取urlstring的值。如何將文本框條目傳遞給在python中使用tkinter的變量

我已經看了所有的其他問題,並不能似乎找到相關的答案,我可以申請

一些代碼的第一個出現在IPython的控制檯,我希望以後會改變,我得到一個值在Ipython控制檯從硬編碼變量上的按鈕按下,但似乎不能將文本框的值放入變量,然後使用它們呢?

amount = '1' 
cur1 = input('What Currency would you like to trade from? ') 
cur2 = input('What Currency would you like to trade to? ') 
cur1_1 = StringVar() 
cur2_1 = StringVar() 
#i = 0 


#Textboxes for user input 
txtcur1 = Entry(root, font="Helvetica 11 bold",bg="white", width=6, textvariable=cur1_1) 
txtcur1.place(x=110, y=50) 
txtcur2 = Entry(root, font="Helvetica 11 bold",bg="white", width=6, textvariable=cur2_1) 
txtcur2.place(x=110, y=75) 
#End 


def results(): 
    t = datetime.utcnow() 
    url1 = "http://www.xe.com/currencyconverter/convert/" + "?Amount=" + amount + "&From=" + cur1 + "&To=" + cur2 
    url2 = "http://www.xe.com/currencyconverter/convert/" + "?Amount=" + amount + "&From=" + cur2_1 + "&To=" + cur1_1 

但對我的生活我不能得到從文本框的變量引入變量cur1_1cur2_1和我得到的類型錯誤。

url2 = "http://www.xe.com/currencyconverter/convert/" + "?Amount=" + amount + "&From=" + cur2_1 + "&To=" + cur1_1 
TypeError: must be str, not StringVar 

當我將其更改爲字符串,它說,必須是3位長 我還以爲這本來是比這更簡單一點。 請幫忙嗎?

此外,一旦我有匯率返回值,我需要他們轉換爲decimal to 9地方,並用逗號顯示貨幣使用。

全部代碼在這裏https://pastebin.com/uPWyPXMZ

+0

你已經發布了太多的代碼。請嘗試減少到​​一個[mcve] –

+0

我做了嘗試,但它太混淆了 –

+0

和我看到更長的時候研究這樣的其他問題 –

回答

2

你的問題似乎你使用cur1_1cur2_1,好像他們是字符串時,你應該調用它們StringVar.get()方法來訪問他們的字符串值中。

頭腦簡單的例子:在輸入框中

import tkinter as tk 

def show_text(): 
    label_text.set('Heh, heh, heh, you said, "' + entry_text.get() + '"') 

root = tk.Tk() 

entry_text = tk.StringVar() 
entry = tk.Entry(root, width=10, textvariable=entry_text) 
entry.pack() 

button = tk.Button(root, text="Click Me", command=show_text) 
button.pack() 

label_text = tk.StringVar() 
label = tk.Label(root, textvariable=label_text) 
label.pack() 

root.mainloop() 

將文本,並單擊按鈕。文本將在創建時通過與Entry關聯的StringVar.get()方法從輸入框轉移到標籤。

+0

感謝堆如此工作真棒 –

+0

將返回vals轉換爲小數只是returned_val =十進制(thevalue.get())??? –

+0

@GoulouhAnwar,根據你的需要,我會說'int(thevalue.get())'或'float(thevalue.get())'。從哪裏導入'Decimal()'? – cdlane

相關問題