Pwm MegaWidgets不适用于销毁小部件



我尝试下面的代码,然后收到&quot_tkinter。TclError:错误的窗口路径名"。!框架框架条目";目的是当我按下按钮时,在地震窗口中显示组合框大部件

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((来修复它。

我尝试了一个Toplevel小部件,而不是TK。我认为这是一个很好的解决方案这是解决方案。注意组合功能

来自tkinter进口*进口Pmw级工程师(对象(:definit(self、quake、parent(:self.quake=地震self.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()

相关内容

  • 没有找到相关文章

最新更新