首页 > 解决方案 > Python Tkinter:我可以使用几个条目的输入进行计算并将结果显示为文本吗?

问题描述

好吧 - 我的编程经验不足 24 小时 - 这是我的第二天 - 所以请不要屠杀我。昨天我几乎整天都在试图弄清楚这一点,但是所有的概念对我来说仍然有点滑 - 我希望有人愿意提供帮助。

我想根据几个 Entry 小部件的输入进行计算,然后将结果显示为 Label(或只是文本)中的输出。

这是一张图片

这是一段代码


    from tkinter import *
from tkinter.messagebox import *

root = Tk()
root.title("StoGram 1.0")

# Entry
symentry = Entry(root, width=10) #Symbol
enentry = Entry(root, width=10) #Entry
slentry = Entry(root, width=10) #Stop Loss
tpentry = Entry(root, width=10) #Take Profit
kbentry = Entry(root, width=10) #Bank Balance
rentry = Entry(root, width=10) #Max Risk


symentry.grid(row=1, column=3) #Symbol
enentry.grid(row=2, column=1) #Entry
slentry.grid(row=3, column=1) #Stop Loss
tpentry.grid(row=4, column=1) #Take Profit
kbentry.grid(row=5, column=1) #Bank Balance
kbentry.insert(0, "100000") 
rentry.grid(row=6, column=1) #Max Risk
rentry.insert(0, "1")

# Calculate button to grid
calculate_Button = Button(root, text='Calculate', command=answer) 

# Calculate button to grid
calculate_button.grid(row="4", column="3")

我试图弄清楚该怎么做# Calculate button to grid calculate_Button = Button(root, text='Calculate', command=answer)

在尝试我玩过的 def answer():

以及intstr .get()其他一些事情。

但实际上,我只是一只拿着扳手锤子试图让事情发挥作用的猴子,我不知道我在做什么。

非常感谢任何建议。

标签: python-3.xtkintertkinter-entry

解决方案


我想这可能会对你有所帮助。

import tkinter as tk
root = tk.Tk()
root.title("StoGram 1.0")

bank_balance = tk.StringVar()
max_risk =tk.StringVar()
entry = tk.StringVar()
stop_loss= tk.StringVar()
def answer():
    output = (int(bank_balance.get())*int(max_risk.get()))/(int(entry.get())-int(stop_loss.get()))
    print(output)
    Output_label.config(text = str(output))

# Entry
symentry = tk.Entry(root, width=10) #Symbol
enentry = tk.Entry(root, width=10, textvariable = entry) #Entry
slentry = tk.Entry(root, width=10, textvariable = stop_loss) #Stop Loss
tpentry = tk.Entry(root, width=10) #Take Profit
kbentry = tk.Entry(root, width=10,textvariable = bank_balance) #Bank Balance
rentry = tk.Entry(root, width=10, textvariable = max_risk) #Max Risk
symentry_label = tk.Label(root, text = 'Symbol', font=('calibre',10))
enentry_label = tk.Label(root, text = 'Entry:', font=('calibre',10))
slentry_label = tk.Label(root, text = 'Stop Loss:', font=('calibre',10))
tpentry_label = tk.Label(root, text = 'Take Profit:', font=('calibre',10))
kbentry_label = tk.Label(root, text = 'Bank Balance:', font=('calibre',10))
rentry_label = tk.Label(root, text = 'Max Risk%', font=('calibre',10))
Buy_shares_label = tk.Label(root, text = 'Buy Shares:', font=('calibre',10))
Output_label = tk.Label(root, text = '', font=('calibre',10))
Rps_Label = tk.Label(root, text = 'Rps:', font=('calibre',10))
R_Label = tk.Label(root, text = 'R:', font=('calibre',10))
symentry_label.grid(row=1, column=3)
enentry_label.grid(row=3, column=1)
slentry_label.grid(row=4, column=1)
tpentry_label.grid(row=5, column=1)
kbentry_label.grid(row=6, column=1)
rentry_label.grid(row=7, column=1)

Rps_Label.grid(row=4,column=4)
Buy_shares_label.grid(row=5,column=4)
Output_label.grid(row=5,column=6)
R_Label.grid(row=6,column=4)

symentry.grid(row=2, column=3) #Symbol
enentry.grid(row=3, column=2) #Entry
slentry.grid(row=4, column=2) #Stop Loss
tpentry.grid(row=5, column=2) #Take Profit
kbentry.grid(row=6, column=2) #Bank Balance
kbentry.insert(0, "100000")
rentry.grid(row=7, column=2) #Max Risk
rentry.insert(0, "1")

# Calculate button to grid
calculate_Button = tk.Button(root, text='Calculate', command=answer)

# Calculate button to grid
calculate_Button.grid(row="5", column="3")
root.mainloop()

要进行计算,您首先需要创建一个函数,如您所说,该函数被命名为答案。def answer()然后在里面你可以做所有的计算。

然后最重要的工作是从文本输入中提取值,因此我们需要创建变量来初始化它们,因为tk.StringVar()这将使变量成为一种可以在整个程序中使用的全局变量。然后我们需要将变量与tk.Entry()我们需要textvariable = Variable Name用作其参数之一的变量连接起来。

此外,我们需要将变量转换为整数int()因为我们从文本输入中获得的值是字符串的形式。


推荐阅读