首页 > 解决方案 > 仅适用于 tkinter 中的图像的面向对象接口中的初始化路径是什么?

问题描述

这个应用程序应该破坏旧框架以绘制新框架

在我的情况下,框架是图像容器,我在 4 个不同的窗口中显示它们,但在示例中我只显示一个作为示例,从 Img_1to 到的每个实例Img_60都有自己的小部件,这些小部件都有自己的链接。现在我有两个问题,希望你能帮助我。

  1. 在销毁和绘制新框架时,由于前一框架的链接而存在冲突,我正在考虑停用它们但是''''''对我不起作用,我有点恶心。
  2. 我应该在哪里初始化图像?[150],由于性能问题,我问这个问题,因为我注意到窗口需要很长时间才能打开。我感谢所有花时间阅读的人,如果他们没有帮助我也没关系。谢谢。
from tkinter import *

class Crtl(Frame):
    def__init__(self, master, **kwargs):
        super().__init__(master, **kwargs)
        self._frame_1 = None
        self._open_1 = False
        self.button1 = Button(self, text='pack 1',
                      command= lambda:self.windows(ImG)
        self.button1 .pack()

    def windows(self, var_1):
        if not self._open_1:
            self.top1 = Toplevel(self.master)
            self.top1 .geometry('200x200')
                                
        container = var_1(self.top1)

        if self._frame_1 is not None:  
            self._frame_1 .destroy()
        self._frame_1 = container
        self._frame_1 .pack()
        self._open_1 = True

class ImG(Frame):
    def__init__(self, master, **kwargs):
        super().__init__(master, **kwargs)
        self.img1 = PhotoImage(file= '60.png')
        self.lbl1 = Label(self, image=self.img1)

        self.master.bind("<Button-1>", self.img_2)

    def img_2(self):
        print('new image N°24')

root = Tk()
app = Ctrl(root, bg='black')
app .pack()
root .mainloop()
 


标签: pythontkinter

解决方案


推荐阅读