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

📄 dialog.py

📁 reduced python source for embedded apps
💻 PY
字号:
#! /usr/bin/env python# A Python function that generates dialog boxes with a text message,# optional bitmap, and any number of buttons.# Cf. Ousterhout, Tcl and the Tk Toolkit, Figs. 27.2-3, pp. 269-270.from Tkinter import *import sysdef dialog(master, title, text, bitmap, default, *args):    # 1. Create the top-level window and divide it into top    # and bottom parts.    w = Toplevel(master, class_='Dialog')    w.title(title)    w.iconname('Dialog')    top = Frame(w, relief=RAISED, borderwidth=1)    top.pack(side=TOP, fill=BOTH)    bot = Frame(w, relief=RAISED, borderwidth=1)    bot.pack(side=BOTTOM, fill=BOTH)    # 2. Fill the top part with the bitmap and message.    msg = Message(top, width='3i', text=text,		  font='-Adobe-Times-Medium-R-Normal-*-180-*')    msg.pack(side=RIGHT, expand=1, fill=BOTH, padx='3m', pady='3m')    if bitmap:	bm = Label(top, bitmap=bitmap)	bm.pack(side=LEFT, padx='3m', pady='3m')    # 3. Create a row of buttons at the bottom of the dialog.    var = IntVar()    buttons = []    i = 0    for but in args:	b = Button(bot, text=but, command=lambda v=var,i=i: v.set(i))	buttons.append(b)	if i == default:	    bd = Frame(bot, relief=SUNKEN, borderwidth=1)	    bd.pack(side=LEFT, expand=1, padx='3m', pady='2m')	    b.lift()	    b.pack (in_=bd, side=LEFT,		    padx='2m', pady='2m', ipadx='2m', ipady='1m')	else:	    b.pack (side=LEFT, expand=1,		    padx='3m', pady='3m', ipadx='2m', ipady='1m')	i = i+1    # 4. Set up a binding for <Return>, if there's a default,    # set a grab, and claim the focus too.    if default >= 0:	w.bind('<Return>',	       lambda e, b=buttons[default], v=var, i=default:	       (b.flash(),		v.set(i)))    oldFocus = w.focus_get()    w.grab_set()    w.focus_set()    # 5. Wait for the user to respond, then restore the focus    # and return the index of the selected button.    w.waitvar(var)    w.destroy()    if oldFocus: oldFocus.focus_set()    return var.get()# The rest is the test program.def go():    i = dialog(mainWidget,	       'Not Responding',	       "The file server isn't responding right now; "	       "I'll keep trying.",	       '',	       -1,	       'OK')    print 'pressed button', i    i = dialog(mainWidget,	       'File Modified',	       'File "tcl.h" has been modified since '	       'the last time it was saved. '	       'Do you want to save it before exiting the application?',	       'warning',	       0,	       'Save File',	       'Discard Changes',	       'Return To Editor')    print 'pressed button', idef test():    import sys    global mainWidget    mainWidget = Frame()    Pack.config(mainWidget)    start = Button(mainWidget, text='Press Here To Start', command=go)    start.pack()    endit = Button(mainWidget, text="Exit", command=sys.exit)    endit.pack(fill=BOTH)    mainWidget.mainloop()if __name__ == '__main__':    test()

⌨️ 快捷键说明

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