<p>下面是有效的代码(尽管存在被零除的问题):</p>
<pre><code>from tkinter import *
root = Tk()
#Create labels for each parameter
label_Amount = Label(root, text="Amount:")
label_StopLoss = Label(root, text="Stop loss:")
label_EntryPrice = Label(root, text="Entry price:")
label_TargetPrice = Label(root, text="Target price:")
label_ProjectedLoss = Label(root, text="Projected loss:")
label_PLRatio = Label(root, text="P/L Ratio:")
label_ProjectedProfit = Label(root, text="Projected profit:")
#Create inputs
entry_Amount = Entry(root)
entry_StopLoss = Entry(root)
entry_EntryPrice = Entry(root)
entry_TargetPrice = Entry(root)
#Place labels
label_Amount.grid(row=0, column=2)
label_StopLoss.grid(row=1, column= 0)
label_ProjectedLoss.grid(row=2, column=0)
label_EntryPrice.grid(row=1, column=2)
label_PLRatio.grid(row=2, column=2)
label_TargetPrice.grid(row=1, column=4)
label_ProjectedProfit.grid(row=2, column=4)
#Place inputs
entry_Amount.grid(row=0, column=3)
entry_StopLoss.grid(row=1, column=1)
entry_EntryPrice.grid(row=1, column=3)
entry_TargetPrice.grid(row=1, column=5)
#Calculation long function
def calculateLong():
global entry_Amount, entry_StopLoss, entry_EntryPrice, entry_TargetPrice
Amount_val = int(entry_Amount.get())
EntryPrice_val = int(entry_EntryPrice.get())
StopLoss_val = int(entry_StopLoss.get())
TargetPrice_val = int(entry_TargetPrice.get())
projectedLoss_val = (EntryPrice_val * Amount_val) - (StopLoss_val * Amount_val)
label_ProjectedLoss_val = Label(root, text=str(projectedLoss_val))
projectedProfit_val = (TargetPrice_val * Amount_val) - (EntryPrice_val * Amount_val)
label_ProjectedProfit_val = Label(root, text=str(projectedProfit_val))
PLRatio_val = projectedProfit_val / projectedLoss_val
label_PLRatio_val = Label(root, text=str(PLRatio_val))
label_ProjectedLoss_val.grid(row=2, column=1)
label_ProjectedProfit_val.grid(row=2, column=5)
label_PLRatio_val.grid(row=2, column=3)
#Calcualtion short function
def calculateShort():
StopLoss_val = int(entry_StopLoss.get())
Amount_val = int(entry_Amount.get())
EntryPrice_val = int(entry_EntryPrice.get())
TargetPrice_val = int(entry_TargetPrice.get())
projectedLoss_val = (StopLoss_val * Amount_val) - (EntryPrice_val * Amount_val)
label_ProjectedLoss_val = Label(root, text=str(projectedLoss_val))
projectedProfit_val = (EntryPrice_val * Amount_val) - (TargetPrice_val * Amount_val)
label_ProjectedProfit_val = Label(root, text=str(projectedProfit_val))
PLRatio_val = projectedProfit_val / projectedLoss_val
label_PLRatio_val = Label(root, text=str(PLRatio_val))
label_ProjectedLoss_val.grid(row=2, column=1)
label_ProjectedProfit_val.grid(row=2, column=5)
label_PLRatio_val.grid(row=2, column=3)
#Create long and short buttons that trigger functions
button_long = Button(root, text="Calculate long", bg="green", command=calculateLong)
button_short = Button(root, text="Calculate short", bg="red", command=calculateShort)
#Position the buttons to either side of Amount
button_long.grid(row=0, column=4, columnspan=2)
button_short.grid(row=0, column=0, columnspan=2)
root.mainloop()
</code></pre>
<p>记住,每次调用函数时都必须有一种方法来检索信息</p>