⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 components_2.py

📁 Python.Tkinter编程实例代码多多学习
💻 PY
📖 第 1 页 / 共 2 页
字号:
	self.last_background = self.canvas.itemcget(self.bnc, 'fill')
        self.canvas.itemconfig(self.bnc, fill=Color.HIGHLIGHT)
	self.update()

    def focus_out(self, event):
        self.canvas.itemconfig(self.bnc, fill=self.last_background)
	self.update()

    def update(self):
        # First do the blink, if set to blink
        if self.blink:
            if self.on:
                if not self.onState:
                    self.onState = self.status
                self.status  = STATUS_OFF
                self.on      = 0                            
            else:
                if self.onState:
                    self.status = self.onState     # Current ON color
                self.on = 1

	# now update the status
        self.canvas.itemconfig(self.bnc,  fill=self.Colors[self.status])
        self.canvas.itemconfig(self.pins, fill=self.Colors[self.status])

	self.bnc_frame.update_idletasks()

        if self.blink:
            self.bnc_frame.after(self.blinkrate * 1000, self.update)

class PowerSupply(GUICommon):
    def __init__(self, master, width=160, height=130, bg=Color.PANEL,
                 status=STATUS_ON): 
        self.base = bg
        self.set_colors(master)
        
        self.psu_frame = Frame(master, relief=SUNKEN, bg=self.dbase, bd=2, 
                               width=width, height=height)

	id=Label(self.psu_frame, text='DC OK', fg='white',
                 bg=self.dbase, font=('Verdana', 10, 'bold'), bd=0)
	id.place(relx=.8, rely=.15, anchor=CENTER)
	self.led = LED(self.psu_frame, height=12, width=12, shape=ROUND,
                       bg=self.dbase)
	self.led.led_frame.place(relx=0.8, rely=0.31, anchor=CENTER)
	lsub = Frame(self.psu_frame, width=width/1.2, height=height/2,
                     bg=self.dbase, bd=1, relief=GROOVE)
	lsub.place(relx=0.5, rely=0.68, anchor=CENTER)
	pwr=PowerConnector(lsub)
	pwr.socket_frame.place(relx=0.30, rely=0.5, anchor=CENTER)
	sw=PowerSwitch(lsub)
	sw.switch_frame.place(relx=0.75, rely=0.5, anchor=CENTER)
    
class Screw(GUICommon):
    def __init__(self, master, diameter=18, base="gray40", bg=Color.PANEL):
        self.base = base

	basesize = diameter+6
        self.screw_frame = Frame(master, relief="flat", bg=bg, bd=0, 
			  highlightthickness=0)
        self.set_colors(self.screw_frame)

	canvas=Canvas(self.screw_frame, width=basesize, height=basesize,
                      highlightthickness=0, bg=bg, bd=0)
	center = basesize/2
	r = diameter/2
        r2 = r - 4.0

	canvas.create_oval(center-r, center-r, center+r, center+r, 
                           fill=self.base, outline=self.lbase)
	canvas.create_rectangle(center-r2, center-0.2,
                                center+r2, center+0.2,
                                fill=self.dbase, width=0)
	canvas.create_rectangle(center-0.2, center-r2,
                                center+0.2, center+r2,
                                fill=self.dbase, width=0)
	canvas.pack(side="top", fill='x', expand='no')

class StandardLEDs(GUICommon):
    def __init__(self, master=None, bg=Color.CARD):
        for led, label, xpos, ypos, state in [('flt', 'Flt', 0.3, 0.88, 1),
                                              ('pwr', 'Pwr', 0.7, 0.88, 2)]:
            setattr(self, '%s' % led, LED(self.card_frame,shape=ROUND,width=8,
                                          status=state, bg=bg))
            getattr(self, '%s' % led).led_frame.place(relx=xpos, rely=ypos,
                                                      anchor=CENTER)
            Label(self.card_frame, text=label,
                  font=("verdana", 4), fg="white",
                  bg=bg).place(relx=xpos,rely=(ypos+0.028), anchor=CENTER)
        
class CardBlank(GUICommon):
    def __init__(self, master=None, width=20, height=396,
		 appearance="raised", bd=2, base=Color.CARD):
        self.base = base
        self.set_colors(master)
	self.card_frame=Frame(master, relief=appearance, height=height, 
                              width=width, bg=base, bd=bd)
	top_pull = CardPuller(self.card_frame, CARD_TOP, width=width)
	top_pull.puller_frame.place(relx=.5, rely=0, anchor=N)
	bottom_pull = CardPuller(self.card_frame, CARD_BOTTOM, width=width)
	bottom_pull.puller_frame.place(relx=.5, rely=1.0, anchor=S)

class CardPuller(GUICommon):
    def __init__(self, master, torb, width=20):
        self.base = master['background']
        self.set_colors(master)
	self.puller_frame=Frame(master, width=width, height=32,
                                bg=self.lbase, relief='flat')
	Frame(self.puller_frame, width=width/8, height=8,
              bg=self.dbase).place(relx=1.0, rely=[1.0,0][torb],
                                   anchor=[SE,NE][torb])
	Frame(self.puller_frame, width=width/3, height=24,
              bg=self.vdbase).place(relx=1.0, rely=[0,1.0][torb],
                                    anchor=[NE,SE][torb])
        Screw(self.puller_frame, diameter=10, base=self.base,
              bg=self.lbase).screw_frame.place(relx=0.3, rely=[0.2,0.8][torb],
                                               anchor=CENTER)
        
class T3AccessCard(CardBlank,StandardLEDs):
    def __init__(self, master, width=1, height=1):
	CardBlank.__init__(self, master=master, width=width, height=height)
        bg=master['background']
        StandardLEDs.__init__(self, master=master, bg=bg)
        for port, lbl, tag, ypos in [(1,'RX1','T3AccessRX', 0.30),
                                     (2,'TX1','T3AccessTX', 0.40),
                                     (3,'RX2','T3AccessRX', 0.65),
                                     (4,'TX2','T3AccessRX', 0.75)]:
            setattr(self, 'bnc%d' % port, BNC(self.card_frame, fid=tag,
                                              port=port))
            getattr(self, 'bnc%d' % port).bnc_frame.place(relx=0.5,
                                              rely=ypos,anchor=CENTER)
            Label(self.card_frame,text=lbl,
                  font=("verdana", 6), fg="white",
                  bg=bg).place(relx=0.5, rely=(ypos+0.045), anchor=CENTER)
        for led, lbl, xpos, ypos, state in [('rxc','RXC',0.3,0.18,2),
                                            ('oos','OOS',0.7,0.18,1),
                                            ('flt','FLT',0.3,0.23,1),
                                            ('syn','SYN',0.7,0.23,2),
                                            ('rxc','RXC',0.3,0.53,2),
                                            ('oos','OOS',0.7,0.53,1),
                                            ('flt','FLT',0.3,0.58,1),
                                            ('syn','SYN',0.7,0.58,2)]:
            setattr(self, led, LED(self.card_frame,shape=ROUND,width=8,
                                   status=state, bg=bg))
            getattr(self, led).led_frame.place(relx=xpos,
                                        rely=ypos,anchor=CENTER)
            Label(self.card_frame,text=lbl,
                  font=("verdana", 4), fg="white",
                  bg=bg).place(relx=xpos, rely=(ypos+0.028), anchor=CENTER)
            
class Chassis:
    def __init__(self, master):
	self.outer=Frame(master, width=540, height=650, 
		          borderwidth=2, bg=Color.PANEL)
	self.outer.forget()  # We won't display until all
                             # the widgets have been created

        self.inner=Frame(self.outer, width=490, height=650, 
		          borderwidth=2, relief=RAISED, bg=Color.PANEL)
        self.inner.place(relx=0.5, rely=0.5, anchor=CENTER)
        
	self.rack = Frame(self.inner, bd=2, width=325, height=416,
                          bg=Color.CHASSIS)
	self.rack.place(relx=0.985, rely=0.853, anchor=SE)

        incr = 325/9
        x = 0.0
        for i in range(9):
            if i == 4:
                card =T3AccessCard(self.rack, width=incr-1, height=414)
            else:
                card =CardBlank(self.rack, width=incr-1, height=414)

            card.card_frame.place(x=x, y=0, anchor=NW)
            x = x + incr

	self.img = PhotoImage(file='images/logo.gif')
	Label(self.outer, image=self.img, bd=0).place(relx=0.055, rely=0.992,
                                                      anchor=SW)

        for x in [0.02, 0.98]:
            for y in [0.0444, 0.3111, 0.6555, 0.9711]:
                Screw(self.outer, base="gray50").screw_frame.place(relx=x,
                                                   rely=y, anchor=CENTER)

        self.psu1 = PowerSupply(self.inner)
        self.psu1.psu_frame.place(relx=0.99, rely=0.004, anchor=NE)
        self.psu2 = PowerSupply(self.inner)
        self.psu2.psu_frame.place(relx=0.65, rely=0.004, anchor=NE)

        self.psu2.led.turnoff()

        screen1 = Screen(self.inner, width=150, height=600, bg=Color.PANEL)
        screen1.screen_frame.place(relx=0.16, rely=0.475, anchor=CENTER)
        screen2 = Screen(self.inner, width=330, height=80, bg=Color.PANEL)
        screen2.screen_frame.place(relx=0.988, rely=0.989, anchor=SE)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -