那麼,我將如何刪除我的for
循環內生成的所有Tkinter.Label
,並在保留我的生成方法的同時生成新標籤?因爲如果我想降低數字,它不會刪除前一個數字的標籤(例如,輸入'6',你會得到[3,4,5],下一個數字'14'會生成[5,12,13]
。刪除[5,12,13]
如果我的input < 14
?),如果有人有更好的方法來生成這些標籤的輸出,將不勝感激,如果你會嘗試教育我一點。 下面的代碼:我將如何刪除我的for循環中的標籤
import Tkinter
import sys
from fractions import gcd
def func(event):
x = int(e1.get()) # get max number
row = 0
column = 0
count = 0
for a in range(1, x): # loops to get each value in range of x
for b in range(a, x):
for c in range(b, x):
if a**2 + b**2 == c**2 and gcd(a, b) == 1: # if it is a primitive pyth triple, print
row += 1
l = Tkinter.Label(root, text=('[',a,',',b,',',c,']'))
assert isinstance(l, object)
l.grid(row=row, column=column, ipadx=5, ipady=5, sticky='W''E') # display each group of triples to root
root.title('Primitive Triples')
if count > 1:
l.destroy()
if row == 7:
column += 1
row -= 8
def close(): # close program
Tkinter.sys.exit(0)
sys.exit(0)
root = Tkinter.Tk() # establish main gui
root.title('Generator')
e1 = Tkinter.Entry(root)
assert isinstance(e1, object) # only method I've found to allow for Entry().grid()
e1.grid(ipadx=5, ipady=5, sticky='W''E')
root.bind('<Return>', func) # bind to Enter, cleaner and quicker than a button
root.mainloop()
循環之前初始化'list'。在繼續下一次迭代之前,將當前的'Label'附加到這個'list'中。您可以稍後再引用它,以便與'config()','grid_forget()'一起使用,等等。記得在一個不會立即消失的範圍內初始化這個'list'。 – TigerhawkT3