[英]Removing labels created by a function in tkinter
I have a function that produces labels and uses .place() to put them onto the window. 我有一个生成标签并使用.place()将其放到窗口上的函数。 Although later in my program I wish to remove these labels.
虽然稍后在我的程序中我希望删除这些标签。 how would I use the .place_forget() to hide all of the labels?
我将如何使用.place_forget()隐藏所有标签? As I have attempted to call the .place_forget() however only one of the labels is removed.
正如我试图调用.place_forget()一样,只删除了其中一个标签。 And there are several labels of this kind.
并且有几种这样的标签。
Here is the function that produces the labels: 这是产生标签的函数:
def playerTab(team, name, pos, pts, reb, ast, stl, blk, to, y):
global playerTeam, playerName, playerPosition, playerPoints, playerRebounds, playerAssists, playerSteals, playerBlocks, playerTurnovers
#Print the team
playerTeam = Label(statWindow, bg = "white", text = team)
playerTeam.config(height = 1, width = 13)
playerTeam.place(x=20,y=y)
#Print the name
playerName = Label(statWindow, bg = "white", text = name)
playerName.config(height = 1, width = 25)
playerName.place(x=119,y=y)
#Print the players position
playerPosition = Label(statWindow, bg = "white", text = pos)
playerPosition.config(height = 1, width = 4)
playerPosition.place(x=302,y=y)
#Print the players average points
playerPoints = Label(statWindow, bg = "white", text = pts)
playerPoints.config(height = 1, width = 4)
playerPoints.place(x=338,y=y)
#Print the players average rebounds
playerrebounds = Label(statWindow, bg = "white", text = reb)
playerrebounds.config(height = 1, width = 4)
playerrebounds.place(x=374,y=y)
playerAssists = Label(statWindow, bg = "white", text = ast)
playerAssists.config(height = 1, width = 4)
playerAssists.place(x=410,y=y)
playerSteals = Label(statWindow, bg = "white", text = stl)
playerSteals.config(height = 1, width = 4)
playerSteals.place(x=446,y=y)
playerBlocks = Label(statWindow, bg = "white", text = blk)
playerBlocks.config(height = 1, width = 4)
playerBlocks.place(x=482,y=y)
playerTurnovers = Label(statWindow, bg = "white", text = to)
playerTurnovers.config(height = 1, width = 4)
playerTurnovers.place(x=518,y=y)
The code is pretty repetitive but that is not a problem for me at this stage. 该代码是非常重复的,但是在现阶段对我来说这不是问题。 Although I would also welcome ways of making this more efficient.
尽管我也欢迎提高效率的方法。 This function then uses the previous to produce many labels:
然后,此函数使用前一个产生许多标签:
def sortByPoints():
foundPlayers = []
with open ('PlayerList.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
foundPlayers.append((int(row['Average PTS']), int(row['PlayerCode'])))
sortedPlayers = sorted(foundPlayers, reverse=True)
print(sortedPlayers)
for i in range(len(sortedPlayers)):
with open ('PlayerList.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
if row['PlayerCode'] == str(sortedPlayers[i][1]):
print(sortedPlayers[i][1])
playerTab(row['Team'], (row['First Name'] + row['Last Name']), row['Position'], row['Average PTS'], row['Average REB'], row['Average AST'], row['Average STL'], row['Average BLK'], row['Average TO'], (120 + (i * 25)))
How would I then hide all of the labels produced. 然后,我将如何隐藏所有产生的标签。 Or is it not possible to do with the approach that I have made?
还是不可能与我所采用的方法有关? I am using python 3.4
我正在使用python 3.4
I think this can help you : 我认为这可以帮助您:
from tkinter import *
gui=Tk()
def label():
global l1,l2,l3,l4
l1 = Label(gui,text='hi')
l1.place(x=10,y=10)
l2 = Label(gui,text='hi2')
l2.place(x=30,y=10)
l3 = Label(gui,text='hi3')
l3.place(x=50,y=10)
l4 = Label(gui,text='hi4')
l4.place(x=70,y=10)
def remove_label():
l1.place_forget()
l2.place_forget()
l3.place_forget()
l4.place_forget()
print('All cleared!')
b = Button(gui,text='place label',command=label)
b.place(x=10,y=50)
h = Button(gui,text='remove label',command=remove_label)
h.place(x=10,y=100)
gui.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.