一、概述
有时候,我们需要布局,这个时候尺寸就起到重要的作用,但是尺寸很难把握,不利于设计。这个时候框架就起到作用了。tkinter.Frame()
设计一个框架,让后,在此框架中加入组件,这样组织起来就比较方便了。
二、代码
import tkinter as tk
root = tk.Tk()
relief = ["raised", "sunken", "flat", "ridge", "groove", "solid"]
for i, r in enumerate(relief):
frame = tk.Frame(root, bd=2, relief=r)
frame.pack(side="left", anchor='n', padx=10, pady=5)
tk.Label(frame, text=str(i+1)).pack()
tk.Label(frame, text=r).pack()
for j in r:
tk.Label(frame, text=j*4).pack()
root.mainloop()
效果
三、解释
- 框架为我们单独划分了一个区域,用于组织功能相似的组件
- 框架简化了我们布局的难度
- 框架有6中样式
"raised" "sunken" "flat" "ridge" "groove" "solid"
,个人认为"groove"
比较好看 - 代码中使用了
enumerate()
可以返回元素的序号和对应的内容
四、举一反三
代码
import tkinter as tk
root = tk.Tk()
f1 = tk.Frame(root, bd=5, relief="groove")
f1.pack(side="left", anchor='n', padx=5, fill="y")
content1 = "九歌-国殇\n\
操吴戈兮披犀甲,车错毂兮短兵接。\n\
旌蔽日兮敌若云,矢交坠兮士争先。\n\
凌余阵兮躐余行,左骖殪兮右刃伤。\n\
霾两轮兮絷四马,援玉枹兮击鸣鼓。\n\
天时怼兮威灵怒,严杀尽兮弃原野。\n\
出不入兮往不反,平原忽兮路超远。\n\
带长剑兮挟秦弓,首身离兮心不惩。\n\
诚既勇兮又以武,终刚强兮不可凌。\n\
身既死兮神以灵,魂魄毅兮为鬼雄。"
tk.Label(f1, text=content1).pack()
f2 = tk.Frame(root, bd=5, relief="groove")
f2.pack(side="left", anchor='n', padx=5, fill="y")
content2 = "小池-杨万里\n\
泉眼无声惜细流,树阴照水爱晴柔。\n\
小荷才露尖尖角,早有蜻蜓立上头。\n\
"
tk.Label(f2, text=content2).pack()
im = tk.PhotoImage(file="yang.png")
tk.Label(f2, image=im).pack()
root.mainloop()
效果
五、总结
Frame
对我们租出组件很方便,当我们需要在root
窗口上开拓新的区域的时候,就可以使用tkinter.Frame(root)
。
补充: tkinter 组件详解之Frame查看Frame参数的一些含义。