tkinter:获取标签小部件以显示输出



我有一个带有两个输入框的GUI:一个是"最后一次换油的里程";还有一个是"当前里程"。有一个按钮,点击后会运行一个功能,从输入框中读取输入,并打印出我到期或过期的里程数等。我想将输出显示到GUI。我知道我必须创建一个标签小部件,但我如何使它,当我按下按钮和函数被调用,标签文本得到更新的信息从函数?

from tkinter import *
from tkinter import ttk

#initializing root window
root = Tk()
root.title("Car Maintenance App")
#functions
miles = IntVar()
last_miles = IntVar()
def check_oil_change():
miles = miles_entry.get()
miles = int(miles)
last_miles = lastmiles_entry.get()
last_miles = int(last_miles)
miles_till_oilchange = 3000 - (miles - last_miles)
if miles_till_oilchange == 0:
print("You are due for an oil change")
if miles_till_oilchange > 0:
print("You have {} miles until next oil change.".format(miles_till_oilchange))
if miles_till_oilchange < 0:
print("You are over due {} miles for an oil change.".format(abs(miles_till_oilchange)))
#creating container for widgets
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
#widgets
milesLabel = ttk.Label(mainframe, text= "Enter your cars current mileage:")
lastmilesLabel = ttk.Label(mainframe, text= "How many miles was your last oil change at?")
miles_entry = ttk.Entry(mainframe, width=7)
lastmiles_entry = ttk.Entry(mainframe, width=7)
milesButton = ttk.Button(mainframe, text="Enter", command=check_oil_change)
#positioning
milesLabel.grid(row=1, column=0)
miles_entry.grid(row=1, column=1)
milesButton.grid(row=1, column=2)
lastmilesLabel.grid(row=0, column=0)
lastmiles_entry.grid(row=0, column=1)
root.mainloop()

在这种情况下,您可以定义一个标签,并使用.config()方法。

.config()方法允许您配置指定的小部件。您可以编辑小部件的任何参数。

from tkinter import *
from tkinter import ttk
#initializing root window
root = Tk()
root.title("Car Maintenance App")
#functions
miles = IntVar()
last_miles = IntVar()
def check_oil_change():
miles = miles_entry.get()
miles = int(miles)
last_miles = lastmiles_entry.get()
last_miles = int(last_miles)
miles_till_oilchange = 3000 - (miles - last_miles)
if miles_till_oilchange == 0:
mile_lbl.config(text="You are due for an oil change")
elif miles_till_oilchange > 0:
mile_lbl.config(text="You have {} miles until next oil change.".format(miles_till_oilchange))
elif miles_till_oilchange < 0:
mile_lbl.config(text="You are over due {} miles for an oil change.".format(abs(miles_till_oilchange)))

#creating container for widgets
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
#widgets
milesLabel = ttk.Label(mainframe, text= "Enter your cars current mileage:")
lastmilesLabel = ttk.Label(mainframe, text= "How many miles was your last oil change at?")
miles_entry = ttk.Entry(mainframe, width=7)
lastmiles_entry = ttk.Entry(mainframe, width=7)
milesButton = ttk.Button(mainframe, text="Enter", command=check_oil_change)
mile_lbl=Label(mainframe,font=("arial","bold"))
#positioning
milesLabel.grid(row=1, column=0)
miles_entry.grid(row=1, column=1)
milesButton.grid(row=1, column=2)
mile_lbl.grid(row=2,column=0)
lastmilesLabel.grid(row=0, column=0)
lastmiles_entry.grid(row=0, column=1)
root.mainloop()

最新更新