Python2.7.5 Tkinter备用输入

2024-10-03 21:35:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个货币转换器,它可以从互联网上的JSON文件中自动检索汇率。我想设计程序,这样如果它不能访问文件,它会让你手动输入费率。到目前为止,除了这一部分,一切正常。它可以从JSON文件中很好地检索数据,但是当您手动输入它时,它会显示为空白。说到Python和Tkinter,我是个彻头彻尾的傻瓜,所以如果我遗漏了一些简单的东西,我也不会感到惊讶。你知道吗

注意:顶部窗口之前的第一部分是实际代码的副本。窗口本身只是一个模型,以显示我的问题。你知道吗

from Tkinter import *

#**Import Bitcoin market data.**
import json
import urllib2

try:
    btcMarketsJSON = urllib2.urlopen('http://api.bitcoincharts.com/v1/markets.json')
    marketData = json.load(btcMarketsJSON)
    mtGoxUSDdata = [i for i in marketData if i['symbol'] == 'mtgoxUSD']
    bitstampUSDdata = [i for i in marketData if i['symbol'] == 'bitstampUSD']
    mtGoxUSDask = mtGoxUSDdata[0]['ask']
    bitstampUSDask = bitstampUSDdata[0]['ask']
    btcMarketsJSON.close()

except:
    import tkMessageBox as MessageBox
    import tkSimpleDialog as SimpleDialog

    root = Tk()
    root.withdraw()

    if MessageBox.askyesno("Error", "Market data could not be retrieved. Exchange rate will have to be entered manually. Continue anyway?"):
        manualAsk = SimpleDialog.askfloat(" ", "Enter an ask price. This number will be used for all exchanges.")
        mtGoxUSDask = manualAsk
        bitstampUSDask = mtGoxUSDask
    else:
        import sys
        sys.exit()

#**Main Window**      
top = Tk()
top.title("Bitcoin/US Dollar Currency Converter")
top.geometry("+300+300")

selectedAsk = DoubleVar()
selectedAsk.set(mtGoxUSDask)

label = Label(top, textvariable=selectedAsk)
quitButton = Button(top, text="Quit", command=top.destroy)
label.pack()
quitButton.pack()

top.mainloop()

Tags: 文件importjsonforiftkintertop手动
1条回答
网友
1楼 · 发布于 2024-10-03 21:35:26

root.destroy()添加到except子句的末尾就可以完成这项工作。至于这种行为的原因,我只能猜测。你知道吗

最可能的原因是,当我们执行selectedAsk = DoubleVar(); selectedAsk.set(mtGoxUSDask)操作时,root仍然处于活动状态,这就是label行为不正常的原因。你知道吗

相关问题 更多 >