zhudaming120 发表于 2020-4-29 22:36:39

tkinter第二页显示两行的原因

import tkinter as tk
import os
win=tk.Tk()
win.title("实验")
win.geometry("800x700")

var = tk.StringVar()


def hit_zhang():
    for widget in win.winfo_children():
      widget.destroy()
      lzhang = tk.Label(win,text="张三",bg="green",font=("宋体",48),width=15,height=1)
      lzhang.pack()
def hit_wang():
    for widget in win.winfo_children():
      widget.destroy()
      lwang = tk.Label(win, text="王二", bg="green", font=("宋体", 48), width=15, height=1)
      lwang.pack()


bzhang = tk.Button(win,text="张三",font=("宋体",48),width=15,height=1,command=hit_zhang)
bzhang.pack()
bwang = tk.Button(win,text="王二",font=("宋体",48),width=15,height=1,command=hit_wang)
bwang.pack()

win.mainloop()



想创建一个button,可以使第二页开头显示人名,下面创建内容,但是不知为何点击后第二页出现两行人名,请教,请教…………

Twilight6 发表于 2020-4-29 22:40:13

本帖最后由 Twilight6 于 2020-4-29 22:45 编辑

撤回{:10_266:}

zhudaming120 发表于 2020-4-29 22:53:46

{:10_245:}新人,能说点通俗的吗{:10_250:}

Twilight6 发表于 2020-4-29 22:59:08

zhudaming120 发表于 2020-4-29 22:53
新人,能说点通俗的吗

不是 我意思是我刚刚删了之前发的{:10_284:}

Twilight6 发表于 2020-4-29 23:12:37

zhudaming120 发表于 2020-4-29 22:53
新人,能说点通俗的吗

你看看。。。我瞎搞出来了
import tkinter as tk
import os
win=tk.Tk()
win.title("实验")
win.geometry("800x700")

var = tk.StringVar()


def hit_zhang():
    for widget in win.winfo_children():
      widget.destroy()
      lzhang = tk.Label(win,text="张三",bg="green",font=("宋体",48),width=15,height=1)
      lzhang.pack()
      bwang.destroy()
      break
def hit_wang():
    for widget in win.winfo_children():
      widget.destroy()
      lwang = tk.Label(win,text="王二", bg="green", font=("宋体", 48), width=15, height=1)
      lwang.pack()
      bwang.destroy()
      break

bzhang = tk.Button(win,text="张三",font=("宋体",48),width=15,height=1,command=hit_zhang)
bzhang.pack()
bwang = tk.Button(win,text="王二",font=("宋体",48),width=15,height=1,command=hit_wang)
bwang.pack()

win.mainloop()

zhudaming120 发表于 2020-4-29 23:18:34

结果是达到了,谢了。但是想问下
for widget in win.winfo_children():
      widget.destroy()
不是删除了所有的东西吗?为什么在后面还要加入
bwang.destroy()
      break
还有break的意义是啥
有点不填明白呢{:10_266:}

Twilight6 发表于 2020-4-29 23:35:10

zhudaming120 发表于 2020-4-29 23:18
结果是达到了,谢了。但是想问下
for widget in win.winfo_children():
      widget.destroy()


我其实刚刚接触tkinter,还没学到你这,所以winfo_children()我这看不懂...其他都还好,
我在for循环下面试着加了
print(widget)
发现有两个按钮的id,所以我肯定了for这边肯定循环两次了,我就想如果末尾加个break就循环一次应该可行把。然后加上break后再次run,发现少了个张三的LB,但是多了王二的按钮,然后我就试试销毁王二按钮就成功了。。。同理另一个。。。我这样是不是太暴力了

Twilight6 发表于 2020-4-29 23:38:22

zhudaming120 发表于 2020-4-29 23:18
结果是达到了,谢了。但是想问下
for widget in win.winfo_children():
      widget.destroy()


如果可以的话,给个最佳答案呗嘿嘿,虽然答案有些懵哈哈{:10_254:}
页: [1]
查看完整版本: tkinter第二页显示两行的原因