Python 在tkinter中计算输入

Python 在tkinter中计算输入,python,tkinter,Python,Tkinter,我正在使用Idle和tkinter.messagebox。我试图显示输入的计算结果。我一直无法确定如何捕获用户条目,然后运行计算并生成结果 所以,我希望用户能够输入数字,比如2和2。然后,我希望用户按下一个按钮。接下来,2 + 2的答案应该出现在空白条目标签中。 我的问题是如何捕获用户输入并在计算中使用它们,然后显示结果 mydict = {'good':0.7, 'average':0.5, 'optimal': 1, 'unacceptable': 0, 'major innovation'

我正在使用Idle和tkinter.messagebox。我试图显示输入的计算结果。我一直无法确定如何捕获用户条目,然后运行计算并生成结果

所以,我希望用户能够输入数字,比如2和2。然后,我希望用户按下一个按钮。接下来,2 + 2的答案应该出现在空白条目标签中。

我的问题是如何捕获用户输入并在计算中使用它们,然后显示结果

mydict = {'good':0.7, 'average':0.5, 'optimal': 1, 'unacceptable': 0, 'major innovation': 1, 'minor innovation': 0.7, 'no innovation': 0.4, '1st lowest': 1, '2nd lowest': 0.7, '3rd lowest': 0.5, '4th lowest': 0.3}

# Widgets:
from tkinter import *
master = Tk()
label1 = Label(master, text = 'Bid Number', relief = 'groove', width = 16)
label2 = Label(master, text = 'Cost Score', relief = 'groove', width = 16)
label3 = Label(master, text = 'Past Performance', relief = 'groove', width = 16)
label8 = Label(master, text = 'Bid 1' , relief = 'groove', width = 12)
entry1 = Entry(master, relief = 'groove', width = 12)
entry2 = Entry(master, relief = 'groove', width = 12)
label9 = Label(master, text = 'Bid Score', relief = 'groove', width = 16)

def button_function():
    a = float( mydict[entry1.get()] ) * float( mydict[entry2.get()] )

button1 = Button(master, text = 'calculate', relief = 'groove', width = 12, command = button_function)
label16 = Frame(master, print(a))


#Geometry
label1.grid( row = 1, column = 1, padx = 10 )
label2.grid( row = 1, column = 2, padx = 10 )
label3.grid( row = 1, column = 3, padx = 10 )
label8.grid( row = 2, column = 1, padx = 10 )
entry1.grid( row = 2, column = 2, padx = 10 )
entry2.grid( row = 2, column = 3, padx = 10 )
label9.grid( row = 1, column = 8, padx = 10 )
label16.grid( row = 2, column = 8, padx = 10 )
button1.grid( row = 3, column = 4, columnspan = 2) 

我不认为这个问题对任何人都有帮助,除了你目前的状态,但我认为你试图实现的目标可以通过替换:

def button_function():
    a = float( mydict[get(entry1)] ) * float( mydict[get(entry1)] ) * float( mydict[get(entry1)] ) *float( mydict[get(entry2)] ) * float( mydict[get(entry3)] ) *float( mydict[get(entry4)] ) * float( mydict[get(entry5)] ) * float( mydict[get(entry5)] ) * float( mydict[get(entry6)]) 
    ...
与:

此外,增加:

label16.grid()
button1.grid()

为了显示,未显示但显然需要显示小部件。

我解决了这个问题。我需要定义SuffyRead并将其插入空白,然后命令按钮显示答案。谢谢你的帮助

     mydict = {'good':0.7, 'average':0.5, 'optimal': 1, 'unacceptable': 0, 'major innovation': 1, 'minor innovation': 0.7, 'no innovation': 0.4, '1st lowest': 1, '2nd lowest': 0.7, '3rd lowest': 0.5, '4th lowest': 0.3}



 # Widgets:
    from tkinter import 
*from tkinter.messagebox import *


    master = Tk()
    label1 = Label(master, text = 'Bid Number', relief = 'groove', width = 16)
    label2 = Label(master, text = 'Cost Score', relief = 'groove', width = 16)
    label3 = Label(master, text = 'Past Performance', relief = 'groove', width = 16)
    label8 = Label(master, text = 'Bid 1' , relief = 'groove', width = 12)
    entry1 = Entry(master, relief = 'groove', width = 12)
    entry2 = Entry(master, relief = 'groove', width = 12)
    label9 = Label(master, text = 'Bid Score', relief = 'groove', width = 16)
    blank1 = Entry(master, relief = 'groove', width = 16)

    def button_function():
        float( mydict[entry1.get()] ) * float( mydict[entry2.get()] )

    def show_answer():
        Ans = float( mydict[entry1.get()] ) * float( mydict[entry2.get()] )
        blank1.insert(0, Ans)

    button1 = Button(master, text = 'calculate', relief = 'groove', width = 12, command =show_answer)


    #Geometry
    label1.grid( row = 1, column = 1, padx = 10 )
    label2.grid( row = 1, column = 2, padx = 10 )
    label3.grid( row = 1, column = 3, padx = 10 )
    label8.grid( row = 2, column = 1, padx = 10 )
    entry1.grid( row = 2, column = 2, padx = 10 )
    entry2.grid( row = 2, column = 3, padx = 10 )
    label9.grid( row = 1, column = 8, padx = 10 )
    blank1.grid( row = 2, column = 8, padx = 10 )
    button1.grid( row = 3, column = 4, columnspan = 2)

请提供一份报告。大约有3个小部件就足以生成您需要的演示代码了。我试着将其简化。谢谢这要好得多,但它会产生错误,而早期的代码没有。您是否阅读过任何文档或搜索过此网站?关于从入口小部件中获取数据,有很多很多问题,方法是有文档记录的。是的,我已经搜索过了,我没有发现任何有用的东西。如果您特别提到什么,请告诉我。我正在尽我最大的努力,我已经编写了两周的代码,并且一直在自学。这很有帮助,但我仍然无法单击calculate按钮返回label16中的值。为了清楚起见,我想在entry1-entry6中键入单词,单击计算,然后让数字显示在label16中。此外,我认为这将有助于其他人。事实上,这将有助于任何希望计算界面中表示的几何平均值的人。
     mydict = {'good':0.7, 'average':0.5, 'optimal': 1, 'unacceptable': 0, 'major innovation': 1, 'minor innovation': 0.7, 'no innovation': 0.4, '1st lowest': 1, '2nd lowest': 0.7, '3rd lowest': 0.5, '4th lowest': 0.3}



 # Widgets:
    from tkinter import 
*from tkinter.messagebox import *


    master = Tk()
    label1 = Label(master, text = 'Bid Number', relief = 'groove', width = 16)
    label2 = Label(master, text = 'Cost Score', relief = 'groove', width = 16)
    label3 = Label(master, text = 'Past Performance', relief = 'groove', width = 16)
    label8 = Label(master, text = 'Bid 1' , relief = 'groove', width = 12)
    entry1 = Entry(master, relief = 'groove', width = 12)
    entry2 = Entry(master, relief = 'groove', width = 12)
    label9 = Label(master, text = 'Bid Score', relief = 'groove', width = 16)
    blank1 = Entry(master, relief = 'groove', width = 16)

    def button_function():
        float( mydict[entry1.get()] ) * float( mydict[entry2.get()] )

    def show_answer():
        Ans = float( mydict[entry1.get()] ) * float( mydict[entry2.get()] )
        blank1.insert(0, Ans)

    button1 = Button(master, text = 'calculate', relief = 'groove', width = 12, command =show_answer)


    #Geometry
    label1.grid( row = 1, column = 1, padx = 10 )
    label2.grid( row = 1, column = 2, padx = 10 )
    label3.grid( row = 1, column = 3, padx = 10 )
    label8.grid( row = 2, column = 1, padx = 10 )
    entry1.grid( row = 2, column = 2, padx = 10 )
    entry2.grid( row = 2, column = 3, padx = 10 )
    label9.grid( row = 1, column = 8, padx = 10 )
    blank1.grid( row = 2, column = 8, padx = 10 )
    button1.grid( row = 3, column = 4, columnspan = 2)