单击按钮后,Python Tkinter会破坏标签

时间:2017-10-11 11:35:12

标签: python tkinter

我点击一个按钮后会出现一个标签,但是每次点击按钮后,前一个标签保持在其位置并创建一个新标签,我希望新标签代替旧的,代码如下:

browser = webdriver.PhantomJS()
browser.get('http://www.ipvoid.com/ip-blacklist-check/')

def helloCallBack():
   ip = entry.get()
   elem = browser.find_element_by_name('ip')  # Find the search box
   elem.send_keys(ip + Keys.RETURN)
   for elem in itertools.chain(browser.find_elements_by_xpath('.//span[@class = "label label-success"]'), browser.find_elements_by_xpath('.//span[@class = "label label-danger"]')):
      print elem.text
   label2 = tk.Label(root1, text="IPVoid: " + elem.text)
   label2.pack(side=tk.BOTTOM)

root1 = tk.Tk()
root1.geometry("500x500")
root1.title("CZEKER")
label = tk.Label(root1, text='Input IP Address:') 
entry = tk.Entry(root1)
label.pack(side=tk.TOP)
entry.pack()
B = tk.Button(root1, text = "Analiza", command = helloCallBack)
B.pack()
label2 = tk.Label(root1, text="IPVoid: " + elem.text)
label2.pack(side=tk.BOTTOM)

root1.mainloop()

我想我不太清楚这个循环是如何工作的,只要点击按钮B,程序就会执行helloCallBack()方法,其中填充了label2。但是我不能在方法的开头销毁标签,因为它尚未填充,但是我不能在它之后销毁它,因为它会在它出现后立即销毁它,而不是按钮B会被点击的那一刻第二次。我的问题如下:每次点击按钮B后,如何让新标签2代替旧标签2.谢谢。

1 个答案:

答案 0 :(得分:3)

不是每次点击都重新创建该标签,您可以使用空文本创建它,然后在每次点击时更改其内容。

def helloCallBack():
    ...
    ...
    label2.configure(text="IPVoid: " + elem.text)

label2 = tk.Label(root1, text="") 
#or just label2 = tk.Label(root1) used that one to make it explicit right now
label2.pack(side=tk.BOTTOM)