当前位置:   article > 正文

tkinter创建子窗口(只创建一个)_tkinter子窗口

tkinter子窗口
  1. import tkinter as tk
  2. #第一种直接写个类
  3. class OneUi:
  4. def __init__(self,master:tk.Tk):
  5. self.top=tk.Toplevel(master)
  6. self.top.geometry('600x400+100+400')
  7. # self.top.overrideredirect(True)
  8. self.top['bg']='cyan'
  9. self.creat_widgets()
  10. def creat_widgets(self):
  11. self.label=tk.Label(self.top,text='minmin')
  12. self.label.pack()
  13. def exists(self):
  14. return self.top.winfo_exists()
  15. def show_top(self):
  16. return self.top.deiconify()
  17. class MainWindow:
  18. def __init__(self,root:tk.Tk):
  19. self.root=root
  20. self.btn=tk.Button(self.root,text='btn_click',command=self.show_oneui).pack()
  21. def show_oneui(self):
  22. if not hasattr(self.root,'child_window') or not self.root.child_window.exists():
  23. self.root.child_window=OneUi(self.root)
  24. else:
  25. self.root.child_window.show_top()
  26. if __name__ == '__main__':
  27. root=tk.Tk()
  28. root.geometry('600x500')
  29. MainWindow(root)
  30. root.mainloop()
  31. #第二个用继承
  32. import threading
  33. import time
  34. import tkinter as tk
  35. class OneUi(tk.Toplevel):
  36. def __init__(self,master:tk.Tk):
  37. super(OneUi, self).__init__(master)
  38. self.geometry('600x400+100+400')
  39. # self.top.overrideredirect(True)
  40. self['bg']='cyan'
  41. self.creat_widgets()
  42. def creat_widgets(self):
  43. self.label=tk.Label(self,text='minmin')
  44. self.label.pack()
  45. class MainWindow:
  46. def __init__(self,root:tk.Tk):
  47. self.root=root
  48. self.btn=tk.Button(self.root,text='btn_click',command=self.show_oneui).pack()
  49. def show_oneui(self):
  50. if not hasattr(self.root,'child_window') or not self.root.child_window.winfo_exists():
  51. self.root.child_window=OneUi(self.root)
  52. else:
  53. self.root.child_window.deiconify()
  54. if __name__ == '__main__':
  55. root=tk.Tk()
  56. root.geometry('600x500')
  57. MainWindow(root)
  58. root.mainloop()
  59. #第三种
  60. import tkinter as tk
  61. class Ui:
  62. def setupUi(self,root:tk.Tk):
  63. root.geometry("900x800")
  64. root.config(background="cyan")
  65. self.btn = tk.Button(root,text="btn",command=self.on_btn_click)
  66. self.btn.pack()
  67. self.w:tk.Toplevel = None
  68. def on_close(self):
  69. if self.w:
  70. self.w.destroy()
  71. self.w = None
  72. def on_btn_click(self):
  73. if self.__getattribute__("w") is not None:
  74. self.w.deiconify()
  75. else:
  76. self.w = tk.Toplevel(root)
  77. self.w.protocol("WM_DELETE_WINDOW", self.on_close)
  78. if __name__ == '__main__':
  79. root = tk.Tk()
  80. ui = Ui()
  81. ui.setupUi(root)
  82. root.mainloop()
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/892316
推荐阅读
  

闽ICP备14008679号