dialog.py 23 KB

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