如何在Python制作的GUI的画布或文本控件中迭代打印计算结果
修正后的完整可运行代码
from tkinter import * class application(Tk): def __init__(self,parent): Tk.__init__(self,parent) self.parent = parent self.minsize(width=300,height=500) self.initialize() def initialize(self): self.grid_columnconfigure(0,weight=1) self.grid_columnconfigure(1,weight=1) self.grid_columnconfigure(2,weight=1) # 按钮组件定义 self.button1 = Button(self,text='平方运算',bg= 'blue',width=15,height=2, command = self.square_calculate) self.button1.grid(column=0,row=1,sticky='W',pady=5) self.button3 = Button(self,text='退出',bg= 'blue',width=10,height=2,command=self.destroy) self.button3.grid(column=1,row=5,sticky='W',pady=5) # 画布组件定义 self.canvas = Canvas(self,width=230,height=180,state=NORMAL, bg='white') self.canvas.grid(column=0,row=4,sticky='W',padx=100,pady=10) # 标签组件定义 self.label3 = Label(self,text="平方结果",bg = 'red',width=10,height=2,anchor="center") self.label3.grid(column=0,row=3,sticky='W',padx=120) # 平方计算及结果写入画布方法 def square_calculate(self): # 先清空画布原有内容,避免多次点击结果叠加 self.canvas.delete("all") # 逐行写入计算结果,调整y坐标实现换行 for i in range(1,10): y_val = i**2 res_text = f"{i} 的平方是 {y_val}" self.canvas.create_text(115, 20*i, text=res_text, font=('微软雅黑',10)) if __name__ == "__main__": app = application(None) app['bg']='red' app.title("平方计算工具") app.mainloop()
主要修改说明
- 修正原代码的缩进错误,将画布、标签的定义归入
initialize方法内部 - 将平方计算方法移到类内部,修正按钮回调的绑定逻辑,避免调用参数错误
- 新增点击按钮清空画布逻辑,避免多次点击后结果重叠
- 调用画布的
create_text方法将计算结果逐行渲染到画布上,调整坐标保证排版整齐 - 删除原代码中未使用的冗余导入包,降低运行依赖
- 界面文本统一改为中文显示,符合使用习惯
内容的提问来源于stack exchange,提问作者Kimwaga Makono
相关产品推荐
相关产品推荐

