ch8_1.py
# ch8_1.py
from tkinter import *
root = Tk()
root.title("ch8_1")
for fm in ["red","green","blue"]: # 建立三个不同底色的框架
Frame(root,bg=fm,height=50,width=250).pack()
root.mainloop()
ch8_1_1.py
# ch8_1.py
from tkinter import *
root = Tk()
root.title("ch8_1")
for fm in ["red","green","blue"]: # 建立三个不同底色的框架
# Frame(root,bg=fm,height=50,width=250).pack()
Frame(bg=fm,height=50,width=250).pack() # 调用构造方法时省略父对象
root.mainloop()
ch8_2.py
# ch8_1.py
from tkinter import *
root = Tk()
root.title("ch8_2")
# 用字典存储框架颜色与光标形状
fms = {
"red":"cross",
"green":"boat",
"blue":"clock"
}
for fmColor in fms.keys(): # 建立三个不同底色的框架与光标形状
# Frame(root,bg=fm,height=50,width=250).pack()
Frame(root,bg=fmColor,cursor=fms[fmColor],
height=50,width=250).pack(side=LEFT) # 调用构造方法时省略父对象
root.mainloop()
ch8_3.py
# ch8_3.py
from tkinter import *
root = Tk()
root.title("ch8_3")
frameUpper = Frame(root,bg="lightyellow") # 建立上层框架
frameUpper.pack()
btnRed = Button(frameUpper,text="Red",fg="red")
btnRed.pack(side=LEFT,padx=5,pady=5)
btnGreen = Button(frameUpper,text="Green",fg="green")
btnGreen.pack(side=LEFT,padx=5,pady=5)
btnBlue = Button(frameUpper,text="Blue",fg="blue")
btnBlue.pack(side=LEFT,padx=5,pady=5)
frameLower = Frame(root,bg="lightblue") # 建立下层框架
frameLower.pack()
btnPurple = Button(frameLower,text="Purple",fg="purple")
btnPurple.pack(side=LEFT,padx=5,pady=5)
root.mainloop()
ch8_4.py
# ch8_4.py
from tkinter import *
root = Tk()
root.title("ch8_4")
fm1 = Frame(width=150,height=80,relief=GROOVE,borderwidth=5)
fm1.pack(side=LEFT,padx=5,pady=10)
fm2 = Frame(width=150,height=80,relief=RAISED,borderwidth=5)
fm2.pack(side=LEFT,padx=5,pady=10)
fm3 = Frame(width=150,height=80,relief=RIDGE,borderwidth=5)
fm3.pack(side=LEFT,padx=5,pady=10)
root.mainloop()
ch8_5.py
# ch8_5.py
from tkinter import *
root = Tk()
root.title("ch8_5")
fm = Frame(width=150,height=80,relief=RAISED,borderwidth=5) # 创建框架
lab = Label(fm,text="请多选常用的程序语言") # 创建标签
lab.pack()
python = Checkbutton(fm,text="Python") # 创建Python复选框
python.pack(anchor=W)
java = Checkbutton(fm,text="Java") # 创建Java复选框
java.pack(anchor=W)
ruby = Checkbutton(fm,text="Ruby") # 创建Ruby复选框
ruby.pack(anchor=W)
fm.pack(padx=10,pady=10) # 包装框架
root.mainloop()
ch8_6.py
# ch8_6.py
from tkinter import Tk
from tkinter.ttk import Frame, Style
root = Tk()
root.title("ch8_6")
style = Style() # 改用Style
style.theme_use("alt") # 改用alt支持Style
fm1 = Frame(root,width=150,height=80,relief="flat")
fm1.grid(row=0,column=0,padx=5,pady=5)
fm2 = Frame(root,width=150,height=80,relief="groove")
fm2.grid(row=0,column=1,padx=5,pady=5)
fm3 = Frame(root,width=150,height=80,relief="raised")
fm3.grid(row=0,column=2,padx=5,pady=5)
fm4 = Frame(root,width=150,height=80,relief="ridge")
fm4.grid(row=1,column=0,padx=5,pady=5)
fm5 = Frame(root,width=150,height=80,relief="solid")
fm5.grid(row=1,column=1,padx=5,pady=5)
fm6 = Frame(root,width=150,height=80,relief="sunken")
fm6.grid(row=1,column=2,padx=5,pady=5)
root.mainloop()
ch8_7.py
# ch8_7.py
from tkinter import *
root = Tk()
root.title("ch8_7") # 窗口标题
msg = "Welcome to Python GUI tkinter Learning System!!!"
myGif = PhotoImage(file="chuckle.gif") # Logo图像文件
logo = Label(root,image=myGif,text=msg,compound=BOTTOM)
logo.pack()
# 以下是LabelFrame标签框架
labFrame = LabelFrame(root,text="数据验证") # 创建框架标签
accountL = Label(labFrame,text="Account") # name标签
accountL.grid(row=0,column=0) # 默认是 column=0
pwdL = Label(labFrame,text="Password") # address标签
pwdL.grid(row=1,column=0) # 默认是 column=0
accountE = Entry(labFrame) # name文本框
accountE.grid(row=0,column=1)
pwdE = Entry(labFrame,show="*") # address文本框
pwdE.grid(row=1,column=1,pady=10) # 定位address文本框
labFrame.pack(padx=10,pady=5,ipadx=5,ipady=5)
root.mainloop()
ch8_8.py
# ch8_8.py
from tkinter import *
def printInfo():
selection = ""
for i in checkboxes.keys(): # 检查此字典的关键字,同: for i in checkboxes:
if checkboxes[i].get() == True: # 若被选中则执行
selection = selection + sports[i] + "\t"
print(selection)
root = Tk()
root.title("ch8_8") # 窗口标题
root.geometry("400x320")
# 以下建立标签框架与字典
labFrame = LabelFrame(root,text="请选择最喜欢的运动")
sports = {0:"美式足球",1:"棒球",2:"篮球",3:"网球",4:"足球",5:"游泳"} # 运动项目构成的字典
checkboxes = {} # 字典,存放被选取项目的BooleanVar变量
for i in range(len(sports)): # 根据运动字典建立复选框
checkboxes[i] = BooleanVar() # 建立布尔变量对象
Checkbutton(labFrame,text=sports[i],
variable=checkboxes[i]).grid(row=i+1,sticky=W)
labFrame.pack(ipadx=5,ipady=5,pady=10)
btn = Button(root,text="确定",width=10,command=printInfo)
btn.pack()
root.mainloop()
ch8_9.py
# ch8_9.py
from tkinter import *
root = Tk()
root.title("ch8_9")
# root.geometry("400x320")
tl = Toplevel()
Label(tl,text="I am a Toplevel!").pack()
root.mainloop()
ch8_10.py
# ch8_10.py
from tkinter import *
root = Tk()
root.title("ch8_10")
tl = Toplevel()
tl.title("Toplevel")
tl.geometry("300x180")
Label(tl,text="I am a Toplevel!").pack()
root.mainloop()
ch8_11.py
# ch8_11.py
from tkinter import *
import random
cnt = 0
root = Tk()
root.title("ch8_11")
root.geometry("300x180")
msgYes, msgNo, msgExit = 1,2,3
def MessageBox():
msgType = random.randint(1,3) # 随机产生一个整数,范围在1和3之间,包括1和3
if msgType == msgYes:
labTxt = "Yes"
elif msgType == msgNo:
labTxt = "No"
elif msgType == msgExit:
labTxt = "Exit"
tl = Toplevel()
tl.geometry("300x180")
global cnt
tl.title("Message Box"+str(cnt))
cnt += 1
Label(tl,text=labTxt).pack(fill=BOTH,expand=True)
btn = Button(root,text="Click Me",command = MessageBox)
btn.pack()
root.mainloop()