五笔打字通主页
上一篇文章,我用 Frame组件来模拟多窗体切换,其实是在一个窗体里切换不同的Frame而已,其实,我们也可以用ttk组件Notebook组件来模拟多界面,多窗体切换,Notebook组件是ttk组件,需要导入ttk模块,下面的代码,我分别导入tkinter,ttk模块,为了成功模拟多窗体,要去除Notebook组件的选项卡界面,就要用到ttk的style知识,这个知识,我在Notebook组件的讲解文章讲解过了,不清楚的可以回看我的文章。
在代码中:style1.layout('TNotebook.Tab', []) # 隐藏选项卡 这句可以去除选项卡,模拟多窗体切换就更像一些。
在代码中,每个选项卡里,可以用不同的布局方式,不冲突,我在选项卡1用pack布局方法,选项2用grid布局方法,选项卡3用place布局方法。
我把上一篇文章改成用Notebook组件来模拟多窗口切换,切换的方式还是通过菜单来切换,大家运行下面的代码自行测试,本人在window10 测试成功。 丶丌皛
import tkinter as tk import tkinter.ttk as ttk def popup_menu(event): popup.post(event.x_root,event.y_root) def gotofr1(): # 到窗口1 note1.select(0) # 选中第1个选项卡 root.title('窗口1') def gotofr2(): note1.select(1) # 选中第2个选项卡 root.title('窗口2') def gotofr3(): note1.select(2) # 选中第3个选项卡 root.title('窗口3') root=tk.Tk() # 源码来自wb98.com root.title('窗口1') root.geometry('350x150+888+444') popup=tk.Menu(root,tearoff=0) popup.add_command(label='窗口1',command=gotofr1) # 通过窗体右键菜单来切换不同的'窗体' popup.add_command(label='窗口2',command=gotofr2) popup.add_command(label='窗口3',command=gotofr3) root.bind("<Button-3>",popup_menu) style1 = ttk.Style() style1.layout('TNotebook.Tab', []) # 隐藏选项卡 note1=ttk.Notebook(root) # 1 创建Notebook组件 note1.pack(fill=tk.BOTH,expand=True) fr1=tk.Frame(root,bg='lightblue') # 2 创建选项卡1的容器框架 fr2=tk.Frame(root,bg='lightgreen') # 2 创建选项卡2的容器框架 fr3=tk.Frame(root,bg='lightyellow') # 2 创建选项卡3的容器框架 note1.add(fr1,text='选项卡1') # 3 装入框架1到选项卡1 note1.add(fr2,text='选项卡2') # 3 装入框架2到选项卡2 note1.add(fr3,text='选项卡3') # 3 装入框架2到选项卡2 but1=tk.Button(fr1,text='窗口1的按钮') but1.pack() # 4 把相关的组件装入对应的框架里 but2=tk.Button(fr2,text='窗口2的按钮') but2.grid() # 4 把相关的组件装入对应的框架里 but3=tk.Button(fr3,text='窗口3的按钮') but3.place(relx=0.5,rely=0.5,anchor=tk.CENTER) # 4 把相关的组件装入对应的框架里 but1.bind("<ButtonRelease-1>",popup_menu) # 按钮点击释放后弹出菜单 but2.bind("<ButtonRelease-1>",popup_menu) but3.bind("<ButtonRelease-1>",popup_menu) root.mainloop()
运行结果
此文章来自:wb98.com wb86.com 网站还有相关的tkinter教程系列课程文章,感兴趣的可以前往。
来源:济亨网
本文链接:http://wb86.com/post/350.html