Tkinter Pwm MegaWidgets在销毁小部件中不起作用

Tkinter Pwm MegaWidgets在销毁小部件中不起作用,tkinter,tk,pmw,Tkinter,Tk,Pmw,我尝试下面的代码,收到“\u tkinter.TclError:错误的窗口路径名”。!框架框架条目“ 其目的是当我按下按钮时,combobox megawidget出现在quake窗口中 enter code here from tkinter import * import Pmw class engineer(object): def __init__(self,quake,parent): self.quake=quake self.paren

我尝试下面的代码,收到“\u tkinter.TclError:错误的窗口路径名”。!框架框架条目“ 其目的是当我按下按钮时,combobox megawidget出现在quake窗口中

enter code here


  from tkinter import *

  import Pmw

  class engineer(object):

  def __init__(self,quake,parent):
     self.quake=quake
     self.parent=parent
    
  def arent(self):
    self.parent=Tk()
    self.parent.geometry('200x200')
    self.ba=Button(self.parent,text='display',command=self.combo)
    self.ba.grid()
    
def zone_define(self,a):
    print(a)

def combo(self):
    self.quake=Tk()
    self.quake.geometry('200x200')
    zone=["I", "II", "III"]
 
combobox=Pmw.ComboBox(self.quake,label_text='Play',label_bg='white',labelmargin=0,labelpos='wn',
     label_relief=FLAT,listbox_width=24,selectioncommand=self.zone_define)
     combobox.grid()
     combobox.selectitem(asply[1])
     self.quake.mainloop()
if __name__=='__main__':
    gr=engineer(None,None)
    gr.arent()

好的,由于您多次定义Tk(),所以生成了错误。这每次都会创建一个新窗口,这将创建冲突的更改

我以前也遇到过类似的错误,我只需删除第二个Tk(),就解决了这个问题。

我尝试了一个顶级小部件,然后开始工作。我认为这是一个很好的解决方案 这里是解决方案。注意组合函数

从tkinter进口* 进口Pmw 班主任(对象): definit(自我、地震、父母): self.quake=地震 self.parent=parent

def arent(self):
    self.parent=Tk()
    self.parent.geometry('200x200')
    

    self.ba=Button(self.parent,text='ana',command=self.combo)
    self.ba.grid()
    
def zone_define(self,a):
    print(a)

def combo(self):
    self.quake=Toplevel()
    self.quake.geometry('200x200')
    zone=["I", "II", "III"]
  
        
     combobox=Pmw.ComboBox(self.quake,label_text='Play',label_bg='white',
            labelmargin=0, labelpos='wn',label_relief=FLAT,
            listbox_width=24,selectioncommand=self.zone_define,
             scrolledlist_items=zone,  
            arrowbutton_bg='white',arrowbutton_relief=FLAT,
             arrowbutton_highlightcolor='white',arrowbutton_bd=0)
    combobox.grid()
    combobox.selectitem(zone[0])
    self.quake.mainloop()
if __name__=='__main__':
    gr=engineer(None,None)
    gr.arent()

请修复发布代码中的缩进错误。不要多次使用
tk.tk
。我使用顶级小部件而不是tk()