Tkinter实现带标签的记事本

#-*-coding:utf-8-*-
'''
Created on 2015年11月30日

@author: Zroad
'''

from Tkinter import *

class Notebook(object):

    def __init__(self, master, side=LEFT):
        self.active_fr = None
        self.count = 0
        self.choice = IntVar(0)
        if side in (TOP, BOTTOM):
            self.side = LEFT
        else:
            self.side = TOP
        self.rb_fr = Frame(master, borderwidth=2, relief=RIDGE)
        self.rb_fr.pack(side=side, fill=BOTH)
        self.screen_fr = Frame(master, borderwidth=2, relief=RIDGE)
        self.screen_fr.pack(fill=BOTH)

    def __call__(self):
        return self.screen_fr

    def add_screen(self, fr, title):
        b = Radiobutton(self.rb_fr, text=title, indicatoron=0, variable=self.choice, value=self.count, 
                        command=lambda:self.display(fr))
        b.pack(fill=BOTH, side=self.side)
        if not self.active_fr:
            fr.pack(fill=BOTH, expand=1)
            self.active_fr = fr
        self.count += 1

    def display(self, fr):
        self.active_fr.forget()
        fr.pack(fill=BOTH, expand=1)
        self.active_fr = fr

if __name__ == "__main__":
    root = Tk()
    nb = Notebook(root, LEFT)

    """
    生成不同的框架(面板),每个都把NB当做"master"
    """
    f1 = Frame(nb())
    b1 = Button(f1, text = "Button 1")
    e1 = Entry(f1)

    b1.pack(fill=BOTH, expand=1)
    e1.pack(fill=BOTH, expand=1)

    f2 = Frame(nb())
    b2 = Button(f2, text = "Button 2")
    b3 = Button(f2, text = "Beep 2", command = Tk.bell)
    b2.pack(fill=BOTH, expand=1)
    b3.pack(fill=BOTH, expand=1)
    f3 = Frame(nb())

    nb.add_screen(f1, "Screen 1")
    nb.add_screen(f2, "Screen 2")
    nb.add_screen(f3, "dummy")
    root.mainloop()

运行结果:
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值