Pwm MegaWidgets 在销毁小部件时不起作用
Pwm MegaWidgets do not work in destroy widgets
我尝试下面的代码,我收到“_tkinter.TclError:错误的 window 路径名“.!frame.!frame.!entry”
目的是当我按下按钮
时组合框 megawidget 出现在地震 window 中
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() ,因此会产生错误。这每次都会创建一个新的 window,这将产生冲突的更改。
我之前有过类似的错误,我通过简单地删除第二个 Tk() 来修复它。
我尝试使用 Toplevel 小部件而不是 TK() 并开始工作。我认为这是一个很好的解决方案
这是解决方案。注意combo函数
从 tkinter 导入 *
输入 Pmw
class 工程师(object):
def init(self,quake,parent):
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()
我尝试下面的代码,我收到“_tkinter.TclError:错误的 window 路径名“.!frame.!frame.!entry” 目的是当我按下按钮
时组合框 megawidget 出现在地震 window 中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() ,因此会产生错误。这每次都会创建一个新的 window,这将产生冲突的更改。
我之前有过类似的错误,我通过简单地删除第二个 Tk() 来修复它。
我尝试使用 Toplevel 小部件而不是 TK() 并开始工作。我认为这是一个很好的解决方案 这是解决方案。注意combo函数
从 tkinter 导入 * 输入 Pmw class 工程师(object): def init(self,quake,parent): 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()