-
tkinter 创建菜单界面可以开发gui 的flow 管理器,这样更有利于flow的标准化,减少出错的机会,是flow 开发规整化的追求 。
- 通过 menu 控件创建主界面的菜单选项,如果需要用启动菜单选项跳转到其他界面的功能,及界面切换,最好是用class 声明多对象,这个时候需要注意,每个类的继承,构造函数_init_ 问题,
- 界面切换的实质就是原有界面的删除,新界面的创建。
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
# -*- coding: utf-8 -*-
"""
Created on Tue Oct 16 11:15:01 2018
Description:tkinter界面切换
Version:
@author: HJY
"""
import tkinter as tk
class basedesk():
def __init__(self, master):
self.root = master
self.root.config()
self.root.title('Base page')
self.root.geometry('200x200')
initface(self.root)
class initface():
def back(self):
self.face1.destroy()
initface(self.master)
def __init__(self, master):
self.master = master
self.master.config(bg='green')
# 基准界面initface
self.initface = tk.Frame(self.master, )
self.initface.pack()
#btn = tk.Button(self.initface, text='change', command=self.change2)
#btn.pack()
menubar = tk.Menu(root)
menubar.add_command(label = "Hello", command = root.quit)
menubar.add_command(label = "Quit", command = root.quit)
editmenu = tk.Menu(menubar, tearoff=False)
editmenu.add_command(label="剪切", command= self.change2)
editmenu.add_command(label="拷贝", command= self.change1)
editmenu.add_command(label="粘贴", command=root.quit)
menubar.add_cascade(label="Hello", menu=editmenu)
root.config(menu = menubar)
def change1(self, ):
self.initface.destroy()
face1(self.master)
def change2(self, ):
self.initface.destroy()
face2(self.master)
class face1():
def back(self):
self.face1.destroy()
initface(self.master)
def __init__(self, master):
self.master = master
self.master.config(bg='blue')
self.face1 = tk.Frame(self.master, )
self.face1.pack()
btn_back = tk.Button(self.face1, text='face1 back', command=self.back)
btn_back1 = tk.Button(self.face1, text='face2 back', command=self.back)
btn_back.pack()
btn_back1.pack()
class face2():
def back(self):
self.face2.destroy()
initface(self.master)
def __init__(self, master):
self.master = master
self.master.config(bg='yellow')
self.face2 = tk.Frame(self.master, )
self.face2.pack()
btn_back = tk.Button(self.face2, text='face2 back', command=self.back)
btn_back1 = tk.Button(self.face2, text='face2 back', command=self.back)
btn_back.pack()
btn_back1.pack()
if __name__ == '__main__':
root = tk.Tk()
basedesk(root)
root.mainloop()