ch16_1.py
# ch16_1.py
from tkinter import *
from tkinter import messagebox
def hello():
messagebox.showinfo("Hello","欢迎使用菜单")
root = Tk()
root.title("ch16_1")
root.geometry("300x180")
# 建立最上层菜单
menubar = Menu(root)
# menubar.add_command(label="Exit!",command=root.destroy)
menubar.add_command(label="Hello!",command=hello)
menubar.add_command(label="Exit!",command=root.destroy)
root.config(menu=menubar) # 显示菜单对象
root.mainloop()
ch16_2.py
# ch16_2.py
from tkinter import *
from tkinter import messagebox
def newFile():
messagebox.showinfo("New File-林祖泉","新建文档-林祖泉")
root = Tk()
root.title("ch16_2")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar)
menubar.add_cascade(label="File 文件-林祖泉",menu=filemenu)
# 在File菜单内建立菜单列表
filemenu.add_command(label="New File 新建文件-林祖泉",command=newFile)
filemenu.add_command(label="Exit 退出-林祖泉!",command=root.destroy)
root.config(menu=menubar) # 显示菜单对象
root.mainloop()
ch16_3.py
# ch16_3.py
from tkinter import *
from tkinter import messagebox
def newFile():
messagebox.showinfo("New File-林祖泉","新建文档-林祖泉")
root = Tk()
root.title("ch16_3")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar,tearoff=False)
menubar.add_cascade(label="File 文件-林祖泉",menu=filemenu)
# 在File菜单内建立菜单列表
filemenu.add_command(label="New File 新建文件-林祖泉",command=newFile)
filemenu.add_command(label="Exit 退出-林祖泉!",command=root.destroy)
root.config(menu=menubar) # 显示菜单对象
root.mainloop()
ch16_4.py
# ch16_4.py
from tkinter import *
from tkinter import messagebox
def newFile():
messagebox.showinfo("New File-林祖泉","新建文档-林祖泉")
def openFile():
messagebox.showinfo("New File-林祖泉","打开文档-林祖泉")
def saveFile():
messagebox.showinfo("New File-林祖泉","保存文档-林祖泉")
def saveAsFile():
messagebox.showinfo("New File-林祖泉","另存为文档-林祖泉")
root = Tk()
root.title("ch16_4")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar)
menubar.add_cascade(label="File 文件-林祖泉",menu=filemenu)
# 在File菜单内建立菜单列表
filemenu.add_command(label="New File 新建文件-林祖泉",command=newFile)
filemenu.add_command(label="Open File 新建文件-林祖泉",command=openFile)
filemenu.add_separator()
filemenu.add_command(label="Save File 新建文件-林祖泉############",command=saveFile)
filemenu.add_separator()########################
filemenu.add_command(label="Save As File 新建文件-林祖泉",command=saveAsFile)
filemenu.add_separator()
filemenu.add_command(label="Exit 退出-林祖泉!",command=root.destroy)
root.config(menu=menubar) # 显示菜单对象
root.mainloop()
ch16_5.py
# ch16_5.py
from tkinter import *
from tkinter import messagebox
def newFile():
messagebox.showinfo("New File-林祖泉","新建文档-林祖泉")
def openFile():
messagebox.showinfo("New File-林祖泉","打开文档-林祖泉")
def saveFile():
messagebox.showinfo("New File-林祖泉","保存文档-林祖泉")
def saveAsFile():
messagebox.showinfo("New File-林祖泉","另存为文档-林祖泉")
def aboutMe():
messagebox.showinfo("New File-林祖泉","代码由cxq重现...")
root = Tk()
root.title("ch16_5")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar)
menubar.add_cascade(label="File 文件-林祖泉",menu=filemenu)
# 在File菜单内建立菜单列表
filemenu.add_command(label="New File 新建文件-林祖泉",command=newFile)
filemenu.add_command(label="Open File 新建文件-林祖泉",command=openFile)
filemenu.add_separator()
filemenu.add_command(label="Save File 新建文件-林祖泉############",command=saveFile)
# filemenu.add_separator()########################
filemenu.add_command(label="Save As File 新建文件-林祖泉",command=saveAsFile)
filemenu.add_separator()
filemenu.add_command(label="Exit 退出-林祖泉!",command=root.destroy)
# 建立菜单类别对象,并将此菜单类别命名为Help
helpmenu = Menu(menubar)
menubar.add_cascade(label="Help-帮助-林祖泉",menu=helpmenu)
# 在Help菜单内建立菜单列表
helpmenu.add_command(label="About Me-关于我",command=aboutMe)
root.config(menu=menubar) # 显示菜单对象
root.mainloop()
ch16_6.py
# ch16_6.py
from tkinter import *
from tkinter import messagebox
def newFile():
messagebox.showinfo("New File-林祖泉","新建文档-林祖泉")
def openFile():
messagebox.showinfo("New File-林祖泉","打开文档-林祖泉")
def saveFile():
messagebox.showinfo("New File-林祖泉","保存文档-林祖泉")
def saveAsFile():
messagebox.showinfo("New File-林祖泉","另存为文档-林祖泉")
def aboutMe():
messagebox.showinfo("New File-林祖泉","代码由cxq重现...")
root = Tk()
root.title("ch16_6")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar)
menubar.add_cascade(label="File 文件-林祖泉",menu=filemenu,underline=0)
# 在File菜单内建立菜单列表
filemenu.add_command(label="New File 新建文件-林祖泉",command=newFile,underline=0)
filemenu.add_command(label="Open File 新建文件-林祖泉",command=openFile,underline=0)
filemenu.add_separator()
filemenu.add_command(label="Save File 新建文件-林祖泉############",command=saveFile,underline=0)
# filemenu.add_separator()########################
filemenu.add_command(label="Save As File 新建文件-林祖泉",command=saveAsFile,underline=5)
filemenu.add_separator()
filemenu.add_command(label="Exit 退出-林祖泉!",command=root.destroy,underline=0)
# 建立菜单类别对象,并将此菜单类别命名为Help
helpmenu = Menu(menubar)
menubar.add_cascade(label="Help-帮助-林祖泉",menu=helpmenu,underline=0)
# 在Help菜单内建立菜单列表
helpmenu.add_command(label="About Me-关于我",command=aboutMe,underline=1)
root.config(menu=menubar) # 显示菜单对象
root.mainloop()
ch16_7.py
# ch16_7.py
from tkinter import *
from tkinter import messagebox
def newFile():
messagebox.showinfo("New File-林祖泉","新建文档-林祖泉")
def controlN(event):
messagebox.showinfo("New File","新建文档-CONTROL+N")
root = Tk()
root.title("ch16_7")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar)
menubar.add_cascade(label="File 文件-林祖泉",menu=filemenu,underline=0)
# 在File菜单内建立菜单列表
filemenu.add_command(label="New File 新建文件-林祖泉",
command=newFile,accelerator="Ctrl+N")
# 经过试验发现 #,accelerator="Ctrl+N") 上一行代码的这部分可以直接删去,而不造成可见的影响
filemenu.add_separator()
filemenu.add_command(label="Exit 退出-林祖泉!",command=root.destroy,underline=0)
root.config(menu=menubar) # 显示菜单对象
root.bind("<Control-N>",lambda event:messagebox.showinfo("New File","新建文档-lambda函数实现"))
# root.bind("<Control-N>",controlN)
# 注意: <Control-N>对快捷键的大小写敏感 按键的时候要使用大写的N
root.mainloop()
ch16_8.py
# ch16_8.py
from tkinter import *
from tkinter import messagebox
def findNext():
messagebox.showinfo("Find Next","查找下一个")
def findPrevious():
messagebox.showinfo("Find Previous","查找前一个")
root = Tk()
root.title("ch16_8")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar)
menubar.add_cascade(label="File",menu=filemenu,underline=0)
# 在File菜单内建立菜单列表
# 首先在File菜单内建立find子菜单对象
findmenu = Menu(filemenu,tearoff=False) # 取消分隔线 False
# filemenu.add_cascade(label="Find",menu=findmenu) ############## 可以提前到这
findmenu.add_command(label="Find Next",command=findNext)
findmenu.add_separator() ########################################
findmenu.add_command(label="Find Previous",command=findPrevious)
filemenu.add_cascade(label="Find",menu=findmenu) ############## 提前
# 下面是增加分隔线和建立Exit!子菜单
filemenu.add_separator()
filemenu.add_separator()############################################
filemenu.add_command(label="Exit!",command=root.destroy,underline=0)
root.config(menu=menubar)
root.mainloop()
ch16_9.py
# ch16_9.py
from tkinter import *
from tkinter import messagebox
def minimizeIcon(): # 缩小窗口为图标
print("窗口最小化...")
root.iconify() # 最小化窗口
def showPopupMenu(event): # 显示弹出窗口
print("窗口弹出...")
popupmenu.post(event.x_root,event.y_root) # 在鼠标光标位置处弹出此菜单
# print(event.x_root," *** ",event.y_root)
# print(type(event.x_root)," *** ",type(event.y_root)) # int类型
# popupmenu.post(100,100) ############ # 窗口固定显示
root = Tk()
root.title("ch16_9")
root.geometry("300x180")
popupmenu = Menu(root,tearoff=False) # 建立弹出窗口对象
# 在弹出菜单内建立两个指令列表
popupmenu.add_command(label="Minimize",command=minimizeIcon)
popupmenu.add_command(label="Exit",command=root.destroy)
# 单击鼠标右键绑定显示弹出菜单
root.bind("<Button-3>",showPopupMenu)
# root.config(menu=popupmenu) # 这段代码将popupmenu对象固定在窗口菜单栏
root.mainloop()
ch16_10.py
# ch16_10.py
from tkinter import *
def status():
if demoStatus.get():
statusLabel.pack(side=BOTTOM,fill=X)
else:
statusLabel.pack_forget() # 隐藏标签状态栏
root = Tk()
root.title("ch16_10")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar,tearoff=False)
menubar.add_cascade(label="File",menu=filemenu)
# 在File菜单内建立菜单列表Exit
filemenu.add_command(label="Exit",command=root.destroy)
# 建立菜单类别对象,并将此菜单类别命名为View
viewmenu = Menu(menubar,tearoff=False)
menubar.add_cascade(label="View",menu=viewmenu)
# 在View菜单内创建Check menu button
demoStatus = BooleanVar()
demoStatus.set(True)
viewmenu.add_checkbutton(label="Status",command=status,
variable=demoStatus) # demoStatus状态改变时会调用status函数
root.config(menu=menubar)
statusVar = StringVar()
statusVar.set("显示")
statusLabel = Label(root,textvariable=statusVar,relief="raised")
statusLabel.pack(side=BOTTOM,fill=X)
root.mainloop()
ch16_11.py
# ch16_11.py
from tkinter import *
root = Tk()
root.title("ch16_11")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar,tearoff=False)
menubar.add_cascade(label="File",menu=filemenu)
# 在File菜单内建立菜单列表Exit
filemenu.add_command(label="Exit",command=root.destroy)
# 建立工具栏
toolbar = Frame(root,relief=RAISED,borderwidth=3)
# 在工具栏内创建按钮
myGif = PhotoImage(file="chuckle.gif")
exitBtn = Button(toolbar,image=myGif,command=root.destroy)
exitBtn.pack(side=LEFT,padx=3,pady=3) # 包装按钮
toolbar.pack(side=TOP,fill=X) # 包装工具栏
root.config(menu=menubar) # 显示菜单对象
root.mainloop()