我在TKINTER中使用FOR进行PYTHON表,我希望每次在ENTRY中放置一个新数字时,标签都会更改为新表。例如,一个数字将被放置在ENTRY中,该人将点击TAB按钮,当它被点击时,表格将出现,但如果该人想要另一个号码,然后再次点击,新表格将从前一个。我的解决方案是创建一个删除前一个表的按钮,但是当按下该按钮时,只删除最后一个乘法。我想知道如何点击tabuada按钮,前一个按钮删除新的按钮而不使用另一个按钮。获取下面的代码和照片,谢谢。视频:第一张照片显示重置按钮工作,但它只删除最后一次乘法,第二张照片显示整个乘法。
from tkinter import *
import tkinter as tk
win=tk.Tk()
win.title('Table')
lb=Label(win,text='Type a number:',font='Helvetica 12 bold')
lb.pack()
e=Entry(win)
e.pack()
def click():
global c
c=e.get()
print('requested number ',c)
for b in (range(0, 11)):
global lb2
lb2=Label(text='{} x {} = {} '.format(c, b, int(b)*int(c)))
lb2.pack()
def reset():
lb2['text'] = ' '
bt1=Button(win,text='GO',bg='lightblue',command=click)
bt1.pack()
bt2=Button(win,text='RESET',bg='lightblue',command=reset)
bt2.pack()
win.mainloop()
擦除:
整个乘法:
答案 0 :(得分:0)
以下是您的代码的一些修复程序;它并不完全清楚你的意思是什么:"新表将从前一个表中删除。" ,所以我选择使用新表取代之前的表
您的代码中未定义 c
并且引发了异常
我将标签的构造放在从make_label
块和main
调用的函数click()
中,以便在请求新号码时重建它。
reset
错过了对标签上pack
的调用,以更新显示的文字。
我认为这应该可以帮助你开始正确的方向;如果有什么不清楚,请告诉我。
我修改了reset
,因此标签被销毁并从视图中重新创建,从而消除了窗口大小的增长。
from tkinter import *
import tkinter as tk
win=tk.Tk()
win.title('Table')
lb=Label(win,text='Type a number:',font='Helvetica 12 bold')
lb.grid(row=0, column=0)
lb2 = Label(text='')
e=Entry(win)
e.grid(row=1, column=0)
c = 2
def click():
global c
c = e.get()
print('requested number ', c)
reset()
make_label(c)
def make_label(c):
global lb2
txt = []
for b in (range(0, 11)):
txt.append('{} x {} = {} '.format(c, b, int(b)*int(c)))
text = '\n'.join(txt)
lb2 = Label(text=text)
lb2.grid(row=4, column=0)
def reset():
global lb2
lb2.destroy()
lb2 = Label()
lb2.grid(row=4, column=0)
make_label(c)
bt1=Button(win,text='GO',bg='lightblue',command=click)
bt1.grid(row=2, column=0)
bt2=Button(win,text='RESET',bg='lightblue',command=reset)
bt2.grid(row=3, column=0)
win.mainloop()