-1

我正在做一个 python 任务,这就是我到目前为止的工作。我被卡住了,无法执行应用程序。我正在制作一个计算平均分并给出成绩单的计算器。我正在查看我教授的视频,并且有“import tkinter.messagebox as tkm”,但我不确定如何在代码中实现这一点。

这是我的代码:

import tkinter as tk
import tkinter.messagebox as tkm

window = tk.Tk()
window.geometry('400x400')
window.title("Exam Calculator")

window = tk.Tk()
window.geometry('300x300')

def calculate():
    score1 = float(entry1.get())
    score2 = float(entry2.get())
    score3 = float(entry3.get())
    avg = (score1 + score2 + score3)/3
    if(avg>=90):
        lettergrade= "A"
    elif(avg>=80 and avg<=89):
        lettergrade = "B"
    elif(avg>=70 and avg<=79):
        lettergrade= "C"
    elif(avg>=60 and avg<=69):
        lettergrade = "D"
    else:
        lettergrade = "F"


label1 = tk.Label(window, text='Test 1')
label1.pack()

entry1 = tk.Entry(window)
entry1.pack()

label2 = tk.Label(window, text='Test 2')
label2.pack()

entry2 = tk.Entry(window)
entry2.pack()

label3 = tk.Label(window, text='Test 3')
label3.pack()

entry3 = tk.Entry(window)
entry3.pack()

button2 = tk.Button(window, text="Calculate", 
command=calculate)
Button1 = tk.Button(window, text="quit", 
command=window.destroy)
4

2 回答 2

2

messagebox可以帮助创建快速的小消息窗口。用法很简单,只需在代码中实现即可:

from tkinter import messagebox

在你的情况下:

from tkinter import messagebox as tkm

然后:

messagebox.function(title,message,options)

在你的情况下:

tkm.function(title,message,options)

功能是:

  • showinfo():用于显示一些相关信息。
  • showwarning():用于向用户显示警告。
  • showerror(): 用于显示错误信息。
  • askquestion():用于向用户询问是/否问题。
  • askokcancel():确认用户对某些应用程序活动的操作。
  • askyesno():用于询问有关用户操作的是/否问题。
  • askretrycancel():用于询问用户是否再次执行特定任务。

选项包括:

  • default:此选项用于指定消息框中的默认按钮,如 ABORTRETRYIGNORE
  • parent:此选项用于指定要在其上显示消息框的窗口。

代码只需要一些改进:

  • pack()两个按钮(以显示它们)
  • window.mainloop()在代码末尾添加(这就是为什么不启动)
于 2020-12-16T08:15:21.873 回答
0

您的代码中有多个问题。首先,您定义窗口两次。第二次,你只是覆盖了你的第一个窗口实例,所以把它排除在外。那么你没有打包你的按钮,这意味着它们不会显示在你的窗口中。最后,您错过了 Tkinter 应用程序中最重要的部分,即启动应用程序主循环,这会使窗口弹出并告诉 Tkinter 开始监听您与窗口的鼠标和键盘交互并对其进行操作。这称为事件循环,是每个图形用户界面的主要组件。你通过调用.mainloop()你的实例来启动事件循环tk.Tk,这是你的window变量。

最后,从您的文本中不清楚您实际上想要对 Messagebox 做什么。我假设您想使用消息框来显示calculate函数的结果,因为现在它什么都不做。

import tkinter as tk
import tkinter.messagebox as tkm

window = tk.Tk()
window.geometry('400x400')
window.title("Exam Calculator")

def calculate():
    score1 = float(entry1.get())
    score2 = float(entry2.get())
    score3 = float(entry3.get())
    avg = (score1 + score2 + score3)/3
    if(avg>=90):
        lettergrade= "A"
    elif(avg>=80 and avg<=89):
        lettergrade = "B"
    elif(avg>=70 and avg<=79):
        lettergrade= "C"
    elif(avg>=60 and avg<=69):
        lettergrade = "D"
    else:
        lettergrade = "F"
    message = 'Your result is ' + lettergrade
    tkm.showinfo(title='Result', message=message)


label1 = tk.Label(window, text='Test 1')
label1.pack()

entry1 = tk.Entry(window)
entry1.pack()

label2 = tk.Label(window, text='Test 2')
label2.pack()

entry2 = tk.Entry(window)
entry2.pack()

label3 = tk.Label(window, text='Test 3')
label3.pack()

entry3 = tk.Entry(window)
entry3.pack()

button2 = tk.Button(window, text="Calculate", 
command=calculate)
button2.pack()
Button1 = tk.Button(window, text="quit", 
command=window.destroy)
Button1.pack()

window.mainloop()
于 2020-12-16T08:14:59.463 回答