视频过程中的练习, 可以在python2.7下运行. 001: hello,world: 1 2 3 4 5 6 from Tkinter import Label, Tk root = Tk() thelabel = Label(root, text="This is too easy") thelabel.pack() root.mainloop() 002: Button pack布局 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 from Tkinter import * root = Tk() topFrame = Frame(root) topFrame.pack() bottomFrame = Frame(root) bottomFrame.pack(side=BOTTOM) button1 = Button(topFrame, text="Button 1", fg="red") button2 = Button(topFrame, text="Button 2", fg="blue") button3 = Button(topFrame, text="Button 3", fg="green") button4 = Button(bottomFrame, text="Button 4", fg="purple") button1.pack(side=LEFT) button2.pack(side=LEFT) button3.pack(side=LEFT) button4.pack(side=BOTTOM) root.mainloop() 003: Label和pack布局 1 2 3 4 5 6 7 8 9 10 11 12 13 from Tkinter import * root = Tk() one = Label(root, text="one", bg="red", fg="white") two = Label(root, text="two", bg="green", fg="black") three = Label(root, text="three", bg="blue", fg="white") one.pack() two.pack(fill=X) three.pack(side=LEFT, fill=Y) root.mainloop() 004: grid布局. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from Tkinter import * root = Tk() label_1 = Label(root, text="Name") label_2 = Label(root, text="Password") entry_1 = Entry(root) entry_2 = Entry(root) label_1.grid(row=0) label_2.grid(row=1) entry_1.grid(row=0, column=1) entry_2.grid(row=1, column=1) root.mainloop() 005: grid布局 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 from Tkinter import * root = Tk() label_1 = Label(root, text="Name") label_2 = Label(root, text="Password") entry_1 = Entry(root) entry_2 = Entry(root) label_1.grid(row=0, sticky=E) label_2.grid(row=1, sticky=E) entry_1.grid(row=0, column=1) entry_2.grid(row=1, column=1) c = Checkbutton(root, text="Keep me logged in") c.grid(columnspan=2) root.mainloop() 006: Button和事件 1 2 3 4 5 6 7 8 9 10 11 from Tkinter import * root = Tk() def printName(): print("Chello my name is Bucky!") button_1 = Button(root, text="Print my name", command=printName) button_1.pack() root.mainloop() 007: 绑定事件: 左键,中键,右键 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #coding:utf8 from Tkinter import * root = Tk() def printName(event): print("Chello my name is Bucky!") button_1 = Button(root, text="Print my name") ''' <Button-1> 鼠标左键 <Button-2> 鼠标中键 <Button-3> 鼠标右键 ''' button_1.bind("<Button-1>", printName) button_1.pack() root.mainloop() 008: 绑定事件: 左键,中键,右键 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 from Tkinter import * root = Tk() def leftClick(event): print "left" def middleClick(event): print "middle" def rightClick(event): print "right" frame = Frame(root, width=300, height=250) frame.bind("<Button-1>", leftClick) frame.bind("<Button-2>", middleClick) frame.bind("<Button-3>", rightClick) frame.pack() root.mainloop() 009: Python GUI with Tkinter-8-Using Classes 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # -*- coding:utf-8 -*- ''' Python GUI with Tkinter-8-Using Classes ''' from Tkinter import * class BuckysButtons: def __init__(self, master): frame = Frame(master) frame.pack() self.printButton = Button(frame, text="Print Message", command=self.printMessage) self.printButton.pack(side=LEFT) self.quitButton = Button(frame, text="Quit", command=frame.quit) self.quitButton.pack(side=LEFT) def printMessage(self): print "Wow, this actually worked!" root = Tk() b = BuckysButtons(root) root.mainloop() 010: Python GUI with Tkinter-9-Creating Drop Down Menus 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # -*- coding:utf-8 -*- ''' Python GUI with Tkinter-9-Creating Drop Down Menus ''' from Tkinter import * def doNothing(): print("ok ok I won't...") root = Tk() menu = Menu(root) root.config(menu=menu) subMenu = Menu(menu) menu.add_cascade(label="File", menu=subMenu) subMenu.add_command(label="New Project...", command=doNothing) subMenu.add_command(label="New...", command=doNothing) subMenu.add_separator() subMenu.add_command(label="Exit", command=doNothing) editMenu = Menu(menu) menu.add_cascade(label="Edit", menu=editMenu) editMenu.add_command(label="Redo", command=doNothing) root.mainloop() 011: Python GUI with Tkinter-10-Creating a Toolbar 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 # -*- coding:utf-8 -*- ''' Python GUI with Tkinter-10-Creating a Toolbar ''' from Tkinter import * def doNothing(): print("ok ok I won't...") root = Tk() # ***** Main Menu ***** menu = Menu(root) root.config(menu=menu) subMenu = Menu(menu) menu.add_cascade(label="File", menu=subMenu) subMenu.add_command(label="New Project...", command=doNothing) subMenu.add_command(label="New...", command=doNothing) subMenu.add_separator() subMenu.add_command(label="Exit", command=doNothing) editMenu = Menu(menu) menu.add_cascade(label="Edit", menu=editMenu) editMenu.add_command(label="Redo", command=doNothing) # ***** Toolbar ***** toolbar = Frame(root, bg="blue") insertBtn = Button(toolbar, text="Insert Image", command=doNothing) insertBtn.pack(side=LEFT, padx=2, pady=2) printBtn = Button(toolbar, text="Print", command=doNothing) printBtn.pack(side=LEFT, padx=2, pady=2) toolbar.pack(side=TOP, fill=X) root.mainloop() 012: Python GUI with Tkinter-11-Adding the Status Bar 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 # -*- coding:utf-8 -*- ''' Python GUI with Tkinter-11-Adding the Status Bar ''' from Tkinter import * def doNothing(): print("ok ok I won't...") root = Tk() # ***** Main Menu ***** menu = Menu(root) root.config(menu=menu) subMenu = Menu(menu) menu.add_cascade(label="File", menu=subMenu) subMenu.add_command(label="New Project...", command=doNothing) subMenu.add_command(label="New...", command=doNothing) subMenu.add_separator() subMenu.add_command(label="Exit", command=doNothing) editMenu = Menu(menu) menu.add_cascade(label="Edit", menu=editMenu) editMenu.add_command(label="Redo", command=doNothing) # ***** Toolbar ***** toolbar = Frame(root, bg="blue") insertBtn = Button(toolbar, text="Insert Image", command=doNothing) insertBtn.pack(side=LEFT, padx=2, pady=2) printBtn = Button(toolbar, text="Print", command=doNothing) printBtn.pack(side=LEFT, padx=2, pady=2) toolbar.pack(side=TOP, fill=X) # ***** Status Bar ***** status = Label(root, text="Preparing to do nothing...", bd=1, relief=SUNKEN, anchor=W) status.pack(side=BOTTOM, fill=X) root.mainloop() 013: Python GUI with Tkinter-12-Messagebox 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # -*- coding:utf-8 -*- ''' Python GUI with Tkinter-12-Messagebox How to create a message box with tkinter? http://stackoverflow.com/questions/1052420/how-to-create-a-message-box-with-tkinter ''' from Tkinter import * import tkMessageBox root = Tk() tkMessageBox.showinfo("Window Title", "Monkeys can live up to 300 years.") msg = tkMessageBox answer = msg.askquestion("Question1", "Do you like silly faces?") if answer == 'yes': print(' 8===D~') root.mainloop() 014: Python GUI with Tkinter-13-Shapes and Graphics 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # -*- coding:utf-8 -*- ''' Python GUI with Tkinter-13-Shapes and Graphics ''' from Tkinter import * root = Tk() canvas = Canvas(root, width=200, height=100) canvas.pack() blackLine = canvas.create_line(0, 0, 200, 50) redLine = canvas.create_line(0, 100, 200, 50, fill="red") greenBox = canvas.create_rectangle(25, 25, 130, 60, fill="green") # canvas.delete(redLine) canvas.delete(ALL) root.mainloop() 015: Python GUI with Tkinter-14-Images and Icons 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # -*- coding:utf-8 -*- ''' Python GUI with Tkinter-14-Images and Icons (1.1)在这个例子中遇到问题"_tkinter.TclError: couldn't recognize data in image file" (1.2)http://stackoverflow.com/questions/27599311/tkinter-photoimage-doesnt-not-support-png-image (1.3)http://effbot.org/tkinterbook/photoimage.htm (1.4)解决办法参考上面的链接. 引入 "from PIL import Image, ImageTk" --------------- (2)中文目录要加 u"..." ''' from Tkinter import * from PIL import Image, ImageTk root = Tk() imgList = ["image001.png", "kaola.jpg", u"考拉.jpg"] print(imgList[-1]) image = Image.open(imgList[-1]) # photo = PhotoImage(file="image001.png") photo = ImageTk.PhotoImage(image) label = Label(root, image=photo) label.pack() root.mainloop()