【问题标题】:I having trouble running my python Tkinter question我在运行 python Tkinter 问题时遇到问题
【发布时间】:2020-12-16 07:46:01
【问题描述】:

我正在做一个 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)

【问题讨论】:

  • 你要使用tkinter.messagebox模块来显示结果等级吗?
  • 如果我这样做会破坏所有代码吗?我知道一个同学是用“root”做的
  • 我不明白你说什么。

标签: python python-3.x tkinter pyzo


【解决方案1】:

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()(这就是为什么 is 不启动)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-10-19
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2020-06-23
      • 2019-11-24
      • 2023-02-07
      相关资源
      最近更新 更多