《Python GUI设计 tkinter菜鸟编程》配套代码 第08章 容器控件

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) # 随机产生一个整数,范围在13之间,包括13
    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()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值