dialog.py 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
  1. import tkinter
  2. from __main__ import *
  3. class DialogEvent():
  4. def __init__(self):
  5. self.el = None
  6. self.e_txt = None
  7. self.master = None
  8. def _event(self,event,**args):
  9. print(self,"_event",event)
  10. if 10:#else:
  11. input_event_blocker.set( self.e , self.e_txt)
  12. input_event_blocker.event(event) #,args)
  13. if "keysym" in dir(event):
  14. if event.keysym == "Return":# or event.keysym == "Tab" or event.keysym == "ISO_Left_Tab":
  15. self.master.ok()
  16. elif event.keysym == "Escape":
  17. self.master.close()
  18. else:
  19. pass
  20. #self.el.focus()
  21. class Dialog():
  22. def __init__(self):
  23. self.d = tkinter.simpledialog
  24. self._exit = None
  25. self._cb = self.dummy_cb
  26. self.data = {"Value:",None}
  27. #self.tk = tkinter.Toplevel()
  28. def dummy_cb(self,_return):
  29. print("dialog.dummy_cb()",self,_return)
  30. pass
  31. def askstring(self,title="title",prompt="prompt:",initialvalue=""):
  32. old = 0
  33. if old:
  34. title = "*"+title
  35. txt = self.askstring_old(title=title,prompt=prompt,initialvalue=initialvalue)
  36. self._exit = {"Value":txt}
  37. self.data = {"Value":txt}
  38. self._cb(self._exit)
  39. else:
  40. title = "#"+title
  41. self.askstring_new(title=title,prompt=prompt,initialvalue=initialvalue)
  42. def askstring_old(self,title="title",prompt="prompt:",initialvalue=""):
  43. print(self.d)
  44. print(dir(self.d))
  45. txt = self.d.askstring(title=title,prompt=prompt,initialvalue=initialvalue)
  46. return txt
  47. def _close(self):
  48. print("dialog._close()",self._exit)
  49. self.tk.destroy()
  50. def close(self):
  51. self._close()
  52. time.sleep(0.1)
  53. input_event_blocker.unlock()
  54. self._cb(None)
  55. return {} #self._exit
  56. def ok(self):
  57. _data = {}
  58. for k,e in self.data.items():
  59. #print(k,dir(e))
  60. if e is not None:
  61. _data[k] = e.get()
  62. if "Value" not in _data:
  63. _data["Value"] = None
  64. #t=self.e_txt.get()#[:-1]
  65. #if "=" in t:
  66. # t = t.split("=")[0]
  67. #self._exit = t
  68. self._exit = _data
  69. self._close()
  70. time.sleep(0.1)
  71. input_event_blocker.unlock()
  72. print(self,"ok()",self._exit)
  73. self._cb(self._exit)
  74. def _event(self,event,**args):
  75. print(self,"_event",event)
  76. if 0:#else:
  77. input_event_blocker.set( self.e , self.e_txt)
  78. input_event_blocker.event(event) #,args)
  79. if "keysym" in dir(event):
  80. if event.keysym == "Return":# or event.keysym == "Tab" or event.keysym == "ISO_Left_Tab":
  81. self.ok()
  82. if 1:# _global_short_key == 0:
  83. if event.keysym == "Escape":
  84. self.close()
  85. def event(self,event,**args):
  86. print(self,"event",event)
  87. #global _global_short_key
  88. if 1:#else:
  89. input_event_blocker.set( self.e , self.e_txt)
  90. input_event_blocker.event(event) #,args)
  91. if "keysym" in dir(event):
  92. if event.keysym == "Return":# or event.keysym == "Tab" or event.keysym == "ISO_Left_Tab":
  93. self.ok()
  94. if 1: #_global_short_key == 0:
  95. if event.keysym == "Escape":
  96. self.close()
  97. def ask_exec_config(self,prompt="",_cb=None,**args):
  98. print(self,"ask_exec_config()")
  99. print([prompt,args])
  100. self.data = {"Value:":None}
  101. self._exit = None
  102. try:
  103. self.close()
  104. except Exception as e:print(e)
  105. #self.tk = tkinter.Tk()
  106. self.tk = tkinter.Toplevel()
  107. #self.tk.withdraw() # do not draw
  108. self.tk.iconify()
  109. self.tk.geometry("500x200") #.format(120+c))
  110. self.tk.title("{} EXEC-CONFIG".format(prompt) )#+" "+":"+str(rnd_id))
  111. self.tk.attributes('-topmost',True)
  112. self.tk.protocol("WM_DELETE_WINDOW", self.close)
  113. self.tk.resizable(0,0)
  114. bg = "#e0e"
  115. bg = "#cd5"
  116. bg = "lightgrey"
  117. bg = "#bbb"
  118. self.tk["bg"] = bg
  119. #self.tk.overrideredirect(1)
  120. #self.tk.attributes('-toolwindow', True)
  121. #self.tk.state(newstate='iconic')
  122. self.fo = tk.Frame(self.tk,bd=1) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  123. self.fo["bg"] = "red"
  124. self.fo["bg"] = "#eee"#lightgrey"
  125. self.fo.pack(side="top")
  126. self.fl = tk.Frame(self.fo,bd=2) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  127. self.fl["bg"] = "green"
  128. self.fl["bg"] = "#eee"#lightgrey"
  129. self.fl.pack(side="left")
  130. self.fm = tk.Frame(self.fo,width=20,bd=2) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  131. self.fm["bg"] = "#eee"#lightgrey"
  132. self.fm.pack(side="left",expand=1,fill="y")
  133. self.fr = tk.Frame(self.fo,bd=2) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  134. self.fr["bg"] = "blue"
  135. self.fr["bg"] = "#eee"#lightgrey"
  136. self.fr.pack(side="left")
  137. # ------------------------- frame right
  138. from_= 255
  139. to = 0
  140. self.ff = tk.Frame(self.fr,bd=2) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  141. self.ff["bg"] = "#99a"
  142. self.ff.pack(side="left")
  143. self.b = tk.Scale(self.ff,bg="lightblue", width=28,from_=from_,to=to,command=self._event)
  144. self.data["Master"] = self.b
  145. self.data["Master"].set(100)
  146. k = "HTP-MASTER"
  147. if "cfg" in args and k in args["cfg"]:
  148. #self.data["Master"].config(state="active")
  149. self.data["Master"].set(int(args["cfg"][k]))
  150. self.data["Master"].config(state="disable")
  151. self.b.pack(side="top") #fill=tk.Y, side=tk.TOP)
  152. self.el = tk.Button(self.ff,text="Master",bg="lightblue",width=4)
  153. myTip = Hovertip(self.el,'HTP-MASTER')
  154. self.el.pack(side="top")
  155. from_= 200
  156. self.ff = tk.Frame(self.fr,bd=2) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  157. self.ff["bg"] = "#99a"
  158. self.ff.pack(side="left")
  159. self.b = tk.Scale(self.ff,bg="lightblue",width=28,from_=from_,to=to,command=self._event)
  160. self.data["Size"] = self.b
  161. k = "SIZE-MASTER"
  162. if "cfg" in args and k in args["cfg"]:
  163. #self.data["Size"].config(state="active")
  164. self.data["Size"].set(int(args["cfg"][k]))
  165. self.data["Size"].config(state="disable")
  166. self.b.pack(side="top") #fill=tk.Y, side=tk.TOP)
  167. self.el = tk.Button(self.ff,text="Size",bg="lightblue",width=4)
  168. myTip = Hovertip(self.el,'SIZE-MASTER')
  169. self.el.pack(side="top")
  170. from_= 400
  171. self.ff = tk.Frame(self.fr,bd=2) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  172. self.ff["bg"] = "#99a"
  173. self.ff.pack(side="left")
  174. self.b = tk.Scale(self.ff,bg="lightblue", width=28,from_=from_,to=to,command=self._event)
  175. self.data["Speed"] = self.b
  176. k = "SPEED-MASTER"
  177. if "cfg" in args and k in args["cfg"]:
  178. self.data["Speed"].set(int(args["cfg"][k]))
  179. self.data["Speed"].config(state="disable")
  180. self.b.pack(side="top") #fill=tk.Y, side=tk.TOP)
  181. self.el = tk.Button(self.ff,text="Speed",bg="lightblue",width=4)
  182. myTip = Hovertip(self.el,'SPEED-MASTER')
  183. self.el.pack(side="top")
  184. from_= 400
  185. self.ff = tk.Frame(self.fr,bd=2) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  186. self.ff["bg"] = "#99a"
  187. self.ff.pack(side="left")
  188. self.b = tk.Scale(self.ff,bg="lightblue", width=28,from_=from_,to=to,command=self._event)
  189. self.data["Offset"] = self.b
  190. k = "OFFSET-MASTER"
  191. if "cfg" in args and k in args["cfg"]:
  192. #self.data["Offset"].config(state="active")
  193. self.data["Offset"].set(int(args["cfg"][k]))
  194. self.data["Offset"].config(state="disable")
  195. self.b.pack(side="top") #fill=tk.Y, side=tk.TOP)
  196. self.el = tk.Button(self.ff,text="Offset",bg="lightblue",width=4)
  197. myTip = Hovertip(self.el,'OFFSET-MASTER')
  198. self.el.pack(side="top")
  199. #self.f = tk.Frame(self.fl) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  200. #self.f.pack(side="top")
  201. #self.elx = tk.Label(self.f,text="")
  202. #self.elx["bg"] = bg
  203. #self.elx.pack(side="left")
  204. # ----------------------------------- frame left
  205. self.f = tk.Frame(self.fl) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  206. self.f.pack(side="top",expand=1,fill="y")
  207. self.el = tk.Label(self.f,text=str(" "),anchor="e",width=7)
  208. self.el["bg"] = "#aaa"
  209. self.el.pack(side="left",expand=1,fill="y")
  210. #self.el = tk.Label(self.f,text=str(prompt),anchor="e",width=4)
  211. self.el = tk.Label(self.f,text=" ATTR P/T",anchor="c",width=12)
  212. self.el["bg"] = "#aaa"
  213. self.el.pack(side="left",expand=1,fill="y")
  214. self.el2 = tk.Label(self.f,text="",anchor="w",width=10)
  215. self.el2.config(fg="#aaa")
  216. self.el2["bg"] = "#aaa"
  217. self.el2.pack(side="left")
  218. self.f2 = tk.Frame(self.fl)
  219. self.f2.pack(side="top",expand=1,fill="y")
  220. self.data["in-Fade"] = tk.StringVar()
  221. self.el = tk.Label(self.f2,text="in-Fade",anchor="e",width=8)
  222. self.el.pack(side="left")
  223. self.e = tk.Entry(self.f2,textvariable=self.data["in-Fade"],width=4)
  224. print("---",self.data["in-Fade"].get())
  225. if "cfg" in args and "FADE" in args["cfg"]:
  226. self.data["in-Fade"].set(str(args["cfg"]["FADE"]))
  227. print("---",self.data["in-Fade"].get())
  228. self.e.config(highlightthickness=2)
  229. self.e.config(highlightcolor= "red")
  230. self.e.bind("<Key>",self._event)
  231. self.e.bind("<Button>",self._event)
  232. self.e.pack(side="left")
  233. self.e7 = tk.Entry(self.f2,state="disable",textvariable="x",width=4)#self.data["in-Fade"],width=4)
  234. print("---",self.data["in-Fade"].get())
  235. #if "cfg" in args and "FADE" in args["cfg"]:
  236. # self.data["in-Fade"].set(str(args["cfg"]["FADE"]))
  237. print("---",self.data["in-Fade"].get())
  238. self.e7.config(highlightthickness=2)
  239. self.e7.config(highlightcolor= "red")
  240. self.e7.bind("<Key>",self._event)
  241. self.e7.bind("<Button>",self._event)
  242. self.e7.pack(side="left")
  243. self.el2 = tk.Label(self.f2,text="* only GO",anchor="w",width=9)
  244. self.el2.config(fg="#aaa")
  245. self.el2.pack(side="left")
  246. #self.el2 = tk.Label(self.f2,text="",anchor="w",width=9)
  247. #self.el2.config(fg="#aaa")
  248. #self.el2.pack(side="left")
  249. self.e1 = self.e
  250. self.f2 = tk.Frame(self.fl)
  251. self.f2.pack(side="top",expand=1)
  252. self.data["out-Fade"] = tk.StringVar()
  253. self.data["out-Fade"].set("0.0")
  254. self.el = tk.Label(self.f2,text="out-Fade",anchor="e",width=8)
  255. self.el.pack(side="left")
  256. self.e = tk.Entry(self.f2,textvariable=self.data["out-Fade"],width=4)
  257. print("---",self.data["out-Fade"].get())
  258. if "cfg" in args and "OUT-FADE" in args["cfg"]:
  259. self.data["out-Fade"].set(str(args["cfg"]["OUT-FADE"]))
  260. print("---",self.data["out-Fade"].get())
  261. self.e.config(highlightthickness=2)
  262. self.e.config(highlightcolor= "red")
  263. self.e.bind("<Key>",self._event)
  264. self.e.bind("<Button>",self._event)
  265. self.e.pack(side="left")
  266. # P/T MOVE
  267. self.e7 = tk.Entry(self.f2,state="disable",textvariable="x",width=4)#self.data["in-Fade"],width=4)
  268. print("---",self.data["in-Fade"].get())
  269. #if "cfg" in args and "FADE" in args["cfg"]:
  270. # self.data["in-Fade"].set(str(args["cfg"]["FADE"]))
  271. print("---",self.data["in-Fade"].get())
  272. self.e7.config(highlightthickness=2)
  273. self.e7.config(highlightcolor= "red")
  274. self.e7.bind("<Key>",self._event)
  275. self.e7.bind("<Button>",self._event)
  276. self.e7.pack(side="left")
  277. self.el2 = tk.Label(self.f2,text="* only FL",anchor="w",width=9)
  278. self.el2.config(fg="#aaa")
  279. self.el2.pack(side="left")
  280. self.e1 = self.e
  281. self.f2 = tk.Frame(self.fl)
  282. self.f2.pack(side="top",expand=1,fill="y")
  283. self.data["Delay"] = tk.StringVar()
  284. self.el = tk.Label(self.f2,text="Delay",anchor="e",width=8)
  285. self.el.pack(side="left")
  286. self.e = tk.Entry(self.f2,textvariable=self.data["Delay"],width=4)
  287. if "cfg" in args and "DELAY" in args["cfg"]:
  288. self.data["Delay"].set(str(args["cfg"]["DELAY"]))
  289. self.e.config(highlightthickness=2)
  290. self.e.config(highlightcolor= "red")
  291. self.e.bind("<Key>",self._event)
  292. self.e.bind("<Button>",self._event)
  293. self.e.pack(side="left")
  294. self.el2 = tk.Label(self.f2,text="",anchor="w",width=15)
  295. self.el2.config(fg="#aaa")
  296. self.el2.pack(side="left")
  297. self.e2 = self.e
  298. self.f2 = tk.Frame(self.fl)
  299. self.f2.pack(side="top",expand=1,fill="y")
  300. self.el = tk.Label(self.f2,text="Button",anchor="e",width=12)
  301. self.el.pack(side="left")
  302. self.e_txt = tk.StringVar()
  303. self.e = tk.OptionMenu(self.f2,self.e_txt,"FL", "SEL", "GO","ON") #,width=6)
  304. self.data["Button"] = self.e_txt
  305. self.e["width"] = 4
  306. self.e.config(highlightthickness=2)
  307. self.e.config(highlightcolor= "red")
  308. self.e_txt.set(str(""))
  309. ev1 = DialogEvent()
  310. ev1.e = self.e
  311. ev1.master = self
  312. ev1.e_txt = self.data["Button"]
  313. self.e.bind("<Key>",ev1._event)
  314. self.e.bind("<Button>",ev1._event)
  315. self.e.pack(side="left")
  316. if "button" in args and type(args["button"]) is str:
  317. self.e_txt.set(args["button"]) # default value
  318. self.e3 = self.e
  319. self.el2 = tk.Label(self.f2,text="",anchor="w",width=6)
  320. self.el2.config(fg="#aaa")
  321. self.el2.pack(side="left")
  322. del self.e_txt
  323. del ev1
  324. self.f = tk.Frame(self.fl) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  325. self.f.pack(side="top")
  326. self.f2 = tk.Frame(self.f)
  327. self.f2.pack(side="top",expand=1,fill="y")
  328. self.data["Label"] = tk.StringVar()
  329. self.el = tk.Label(self.f2,text="Label",anchor="e",width=8)
  330. self.el.pack(side="left")
  331. self.e = tk.Entry(self.f2,textvariable=self.data["Label"],width=15) #,command=ev._event)
  332. if "label" in args and type(args["label"]) is str:
  333. self.data["Label"].set(args["label"])
  334. #self.e["bg"] = "#eee"
  335. self.e.config(highlightthickness=2)
  336. self.e.config(highlightcolor= "red")
  337. self.e.icursor(999)
  338. #self.e.selection_range(0, 999)#"end")
  339. self.el2 = tk.Label(self.f2,text="",anchor="w",width=2)
  340. self.el2.config(fg="#aaa")
  341. self.el2.pack(side="left")
  342. ev = DialogEvent()
  343. ev.e = self.e
  344. ev.master = self
  345. ev.e_txt = self.data["Label"]
  346. self.e.bind("<Key>",ev._event)
  347. self.e.bind("<Button>",ev._event)
  348. self.e.pack(side="left")
  349. self.e1 = self.e
  350. del ev
  351. # ---------------------- frame bottom [ok,cancel]
  352. self.fu = tk.Frame(self.tk,bd=2) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  353. self.fu["bg"] = "lightgrey"##eee"
  354. self.fu["bg"] = "#bbb"
  355. self.fu.pack(side="top")
  356. # --- Spacer ---- OK,Cancle
  357. self.f = tk.Frame(self.fu) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  358. self.f.pack(side="top")
  359. self.elx = tk.Label(self.f,text="")
  360. self.elx["bg"] = bg
  361. self.elx["bg"] = "#bbb"
  362. self.elx.pack(side="left")
  363. self.f = tk.Frame(self.fu) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  364. self.f["bg"] = "#bbb"
  365. self.f.pack(side="top")
  366. self.b = tk.Button(self.f,bg="lightgrey", text="OK",width=10,command=self.ok)
  367. self.b.config(padx=1)
  368. #self.b.bind("<Button>",Xevent(fix=fix,mode="D-SELECT",elem=b).cb)
  369. self.b.pack(side="left")
  370. self.fxx = tk.Frame(self.f,width=20) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  371. self.fxx["bg"] = "#bbb"
  372. self.fxx.pack(side="left")
  373. self.b = tk.Button(self.f,bg="lightgrey", text="Cancel",width=10,command=self.close)
  374. self.b.config(padx=1)
  375. self.b.pack(side="left")
  376. self.f = tk.Frame(self.fu) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  377. #self.f["bg"] = "#bbb"
  378. self.f.pack(side="top")
  379. self.elx = tk.Label(self.f,text="")
  380. self.elx["bg"] = bg
  381. self.elx.pack(side="left")
  382. self.e.focus()
  383. #time.sleep(3)
  384. self.tk.deiconify()
  385. def askstring_new(self,title="title",prompt="prompt:",initialvalue=""):
  386. self.data = {}
  387. self._exit = None
  388. try:
  389. self.close()
  390. except Exception as e:print(e)
  391. #try:
  392. # #self.tk.quit()
  393. # print(dir(self.tk))
  394. # self.close()
  395. #except Exception as e:print(e)
  396. #self.tk = tkinter.Tk()
  397. self.tk = tkinter.Toplevel()
  398. #self.tk.withdraw() # do not draw
  399. self.tk.iconify()
  400. c = prompt.count("\n") * 15
  401. self.tk.geometry("200x{}".format(120+c))
  402. self.tk.title(""+str(title) )#+" "+":"+str(rnd_id))
  403. self.tk.attributes('-topmost',True)
  404. self.tk.protocol("WM_DELETE_WINDOW", self.close)
  405. self.tk.resizable(0,0)
  406. bg = "#e0e"
  407. bg = "#aaa"
  408. self.tk["bg"] = bg
  409. #self.tk.overrideredirect(1)
  410. #self.tk.attributes('-toolwindow', True)
  411. #self.tk.state(newstate='iconic')
  412. self.f = tk.Frame(self.tk) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  413. self.f.pack(side="top")
  414. self.elx = tk.Label(self.f,text="")
  415. self.elx["bg"] = bg
  416. self.elx.pack(side="left")
  417. self.f = tk.Frame(self.tk) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  418. self.f.pack(side="top")
  419. self.el = tk.Label(self.f,text=prompt,anchor="w")
  420. self.el["bg"] = bg
  421. self.el.pack(side="left")
  422. self.f = tk.Frame(self.tk) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  423. self.f.pack(side="top")
  424. self.e_txt = tk.StringVar()
  425. self.data["Value"] = self.e_txt
  426. #self.e = tk.Entry(self.f,state="readonly",textvariable=self.e_txt)
  427. self.e = tk.Entry(self.f,textvariable=self.e_txt)
  428. #self.e = tk.Button(self.f,textvariable=self.e_txt,relief="sunken",width=20)
  429. self.e["bg"] = "#fff"
  430. self.e.config(highlightthickness=2)
  431. self.e.config(highlightcolor= "red")
  432. #self.e_txt.set(str(initialvalue)+"<")
  433. self.e_txt.set(str(initialvalue))
  434. self.e.icursor(999)
  435. self.e.selection_range(0, 999)#"end")
  436. self.e.bind("<Key>",self.event)
  437. self.e.bind("<Button>",self.event)
  438. self.e.pack(side="top")
  439. self.f = tk.Frame(self.tk) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  440. self.f.pack(side="top")
  441. self.elx = tk.Label(self.f,text="")
  442. self.elx["bg"] = bg
  443. self.elx.pack(side="left")
  444. self.f = tk.Frame(self.tk) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  445. self.f.pack(side="top")
  446. self.b = tk.Button(self.f,bg="lightgrey", text="OK",width=10,command=self.ok)
  447. self.b.config(padx=1)
  448. #self.b.bind("<Button>",Xevent(fix=fix,mode="D-SELECT",elem=b).cb)
  449. self.b.pack(side="left")
  450. self.b = tk.Button(self.f,bg="lightgrey", text="Cancel",width=10,command=self.close)
  451. self.b.config(padx=1)
  452. self.b.pack(side="left")
  453. self.f = tk.Frame(self.tk) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0)
  454. self.f.pack(side="top")
  455. self.elx = tk.Label(self.f,text="")
  456. self.elx["bg"] = bg
  457. self.elx.pack(side="left")
  458. self.e.focus()
  459. #time.sleep(3)
  460. self.tk.deiconify()