使用tkinter Entry组件append数据后打印列表出现异常信息求助
问题解决:Tkinter Entry组件无法正确获取输入值
你的问题核心是没有调用Entry组件的get()方法——你把方法对象本身(weather1.get)添加到了列表,而非执行方法获取输入框的实际内容。只有调用weather1.get()才能返回输入框中的文本值。
修正后的代码
import tkinter from tkinter import messagebox TemperatureInfo = [] weather = tkinter.Tk() weather.geometry("200x300") weather.update() messagebox.showinfo("Weather App Explanation", "Hello! Welcome to my app that collects weather data! Input different aspects about the weather for the weekdays here and I will send back information on the data you entered!") expln = tkinter.Label(weather, text = "Put the temperatures in here for Monday - Wednesday!").pack() weather1 = tkinter.Entry(weather) weather1.pack(pady = 10) weather2 = tkinter.Entry(weather) weather2.pack(pady = 10) weather3 = tkinter.Entry(weather) weather3.pack(pady = 10) weather4 = tkinter.Entry(weather) weather4.pack(pady = 10) weather5 = tkinter.Entry(weather) weather5.pack(pady = 10) def addTempData(): # 关键修正:给每个get()添加括号,执行方法获取输入内容 TemperatureInfo.append(weather1.get()) TemperatureInfo.append(weather2.get()) TemperatureInfo.append(weather3.get()) TemperatureInfo.append(weather4.get()) TemperatureInfo.append(weather5.get()) def printInfo(): print(TemperatureInfo) done = tkinter.Button(weather, text = "Done", command = addTempData).pack() printing = tkinter.Button(weather, text = 'print', command = printInfo).pack() weather.mainloop()
额外建议
- 若不想多次点击"Done"时重复添加数据,可在
addTempData函数开头加上TemperatureInfo.clear()清空列表 - 可以添加输入校验逻辑,比如把输入转为数值类型,避免非温度格式的内容存入列表
内容的提问来源于stack exchange,提问作者Lucid
相关产品推荐
相关产品推荐

