如何删除画布、分隔符和滚动条?

2024-09-28 22:39:37 发布

您现在位置:Python中文网/ 问答频道 /正文

  1. 我使用pythontkinter进行设计目的。在我的用户界面,我有一个 画布、分隔符和滚动条。更新时,新画布 附加到上一个。你能告诉我怎么把 上一个画布、分隔符和滚动条?在

    我试了separator.destroy()canvas.delete('all')self.canvas.delete('all')self.canvas.update_idletasks()等。

  2. 代码:

        from tkinter import *
        import matplotlib
        import pandas as pd
        from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
        import matplotlib.pyplot as plt
        from wordcloud import WordCloud
        from matplotlib.figure import Figure
    
        master = Tk()
        separator3 = Frame(height=618,width=180, bd=4, bg='dodgerblue')
        separator6 = Frame(height=250,width=240, bd=4, bg='dodgerblue')
        separator1 = Frame(height=100,width=100, bd=1,bg='dodgerblue')
    
        def get():
          Disp_pos =10
          Disp_neg =-12
          w = Scale(separator6, from_=10, to=0,orient=VERTICAL)
          w.set(Disp_pos)
          w.pack(anchor=CENTER,side=TOP,ipady=10,ipadx=10)
    
          Label1 = Label(separator6, text="")
          Label1.pack(anchor=CENTER, side=TOP)
          f3 = Figure(figsize=(2, 3), dpi=100)
          canvas2 = FigureCanvasTkAgg(f3, master=separator3)
          Label1 = Label(separator3,text="  WORD  CLOUD ")
          Label1.pack(anchor=CENTER, side=TOP)
          ax3 = f3.add_subplot(111)
          text = 'sample'
          print(type(text))
          ax3.set_wordcloud = WordCloud().generate(text)
          ax3.imshow(ax3.set_wordcloud, interpolation='bilinear')
          ax3.axis("off")
          canvas2.show()
          canvas2.get_tk_widget().pack( side=BOTTOM,fill=BOTH, expand=1)
          canvas2.draw()
          separator2 = Frame(height=150, width=280, bd=4, bg='dodgerblue')
          scrollbar = Scrollbar(separator2)
          scrollbar.pack(side=RIGHT, ipady=270, fill=Y)
          Label1 = Label(separator2, text=" TEXT ",font=('Times', 12))
          Label1.pack(anchor=CENTER, side=TOP)
          i = 'sample sample sample'
          Re=Listbox(separator2,yscrollcommand=scrollbar.set)                      
          Re.insert(END, i)
          Re.pack()
          scrollbar.config(command=Re.yview)
          separator2.pack(side=TOP, padx=10, pady=10, fill=BOTH)
    
        Button1 = Button(separator1, text='  GET  ', font=('Times', 
                         15,'bold'),command=get,  bg="wheat2",relief=RAISED)
        Button1.pack(anchor=CENTER,pady=5)
        separator1.pack(fill=BOTH,side=LEFT, padx=5, pady=5)
        separator6.pack(fill=BOTH,side=RIGHT, padx=5, pady=5)
        separator3.pack(side=BOTTOM,fill=BOTH,padx=5, pady=5)
        master.config(bg='white')
        master.title('sample')
        mainloop()
    

Tags: sampletextfromimporttopfillsidepack
1条回答
网友
1楼 · 发布于 2024-09-28 22:39:37

要清除框架的内容,其思想是销毁其所有子对象。框架的所有子级都存储在dictionary frame.children(格式为{name:widget})

children = list(frame.children.values())
for child in children:
    child.destroy()

{&;可以在cd2>的开头使用分隔符。separator2只在get()内本地定义,这与其他帧的定义不一致,意味着每次运行{}时都会创建一个新的{}。所以我把它移到函数之外,用其他的框架。在

以下是修改后的代码:

^{pr2}$

相关问题 更多 >