前言
python学习之路任重而道远,要想学完说容易也容易,说难也难。
很多人说python最好学了,但扪心自问,你会用python做什么了?
刚开始在大学学习c语言,写一个飞行棋的小游戏,用dos界面来做,真是出力不讨好。
地图要自己一点一点画出来,就像这样:
================ | | | | |===============
从此讨厌编程,不想继续学下去。每次作业应付。
算法考试,数据结构考试随便背代码,只求通过。
最后呢?我学会变成了吗?只能对一些概念侃侃而谈,但真的会几行代码,能写出实用工具吗?
答案变得模糊。
所以我们要从现在开始,学好python,不要再糊弄下去!!!
组件
label 与 多行文本
# coding=gbk from tkinter import * master = Tk() master.geometry("900x600") #==========label show1=Label(master,text="kunkun") photo = PhotoImage(name="wudi",file="xxzz.gif") show2=Label(master,image=photo) show1.pack(side="left") show2.pack(side="left") #======多行文本 tshow=Text(master,width=10,height=4) tshow.pack(side="bottom")
复选框组件
#========checkbutton var =StringVar() cshow=Checkbutton(master,text="猫猫",variable=var,onvalue="RGB",offvalue="L",fg="blue") cshow.pack(side="top") var2 =StringVar() c2show=Checkbutton(master,text="狗狗",variable=var2,onvalue="RGB",offvalue="L",fg="blue") cshow.pack(side="top") c2show.pack(side="top")
Radiobutton单选组件
#====radio v=IntVar() rshow=Radiobutton(master,text="One",variable=v,value=1) rshow.pack(anchor=W)
anchor=W-----------放在窗体西面
anchor
美: [ˈæŋkər] 英: [ˈæŋkə®] n. 锚;给以安全感的人(或物);精神支柱;顶梁柱
v. 抛锚;下锚;使固定;扣牢 网络 锚点;安佳;锚定
Frame框架组件
labelframe标签框架
lfshow=LabelFrame(master,text="Group",padx=5,pady=5) lfshow.pack(pady=10,padx=10,expand="yes") e1=Entry(lfshow,width=10) e1.pack() e2=Entry(lfshow,width=10) e2.pack()
entry
美: [ˈentri] 英: ['entri]
n. 记录;词条;登录;录入
网络 进入;条目;入口
列表框Listbox
#=========listbox lbshow=Listbox(master,bg="yellow",height=5,width=20) lbshow.pack(side="top") for item in ["one","two","three","four"]: lbshow.insert(END,item)
scrollbar滚动条组件
#======scrollbar sshow=Scrollbar(master) sshow.pack(side=RIGHT,fill=Y) lbshow1=Listbox(master,fg="red",height=5,width=20)# 创建需要滚动条的列表框 lbshow1["yscrollcommand"]=sshow.set#把滚动条对象赋值给列表框属性 lbshow1.pack(side="right")# 设置滚动条在右边 for item in range(10): lbshow1.insert(END,item)# 循环为列表框插入七个值 sshow.config(command=lbshow1.yview())# 滚动条与列表框绑定联动命令属性
scale刻度条组件
#====scale 刻度条组件 scshow=Scale(master,from_=0,to=100)# 长度为100的刻度条 scshow.pack(side="right")
spinbox组件
#=====spinbox sbshow=Spinbox(master,from_=0,to=10) sbshow.pack(side="left")
Spinbox
网络 旋钮控件;框;纺纱箱
spin
美: [spɪn]
英: [spɪn]
v. 旋转;纺纱;吐丝;纺线
n. 头晕;(快速)旋转;常用于英式英语;晕头转向
网络 自旋;旋转球;自转
Toplevel子窗体组件
#====toplevel 子窗体 tlshow=Toplevel(master) tlshow.wm_attributes("-topmost",1)# 子窗体永远在界面最前面 tlshow.title("ok!") t1show=Text(tlshow,width=10,height=4) t2show=Text(tlshow,width=10,height=4) t1show.pack() t2show.pack()
PanedWindow组件
PanedWindow
网络 窗格视窗
pw=PanedWindow(orient=VERTICAL,bg="green") pw.pack(fill=BOTH,expand=1) for w in [Label,Button,Checkbutton,Radiobutton]: pw.add(w(pw,text='可上下移动'))
Menu
下拉菜单
# coding=gbk from tkinter import * master=Tk() m1=Menu(master)# 菜单实例 master.config(menu=m1) def callback():#定义菜单鼠标单击事件的 回调函数 master.title("OK") filemenu=Menu(m1)# 在m1上 添加子菜单 m1.add_cascade(label="File",menu=filemenu)# 在m1上设置子菜单名并关联子菜单1 filemenu.add_command(label="New",command=callback()) filemenu.add_command(label="Open...",command=callback()) filemenu.add_separator()# 增加分割线 filemenu.add_command(label="Exit",command=callback()) helpmenu=Menu(m1) m1.add_cascade(label="Help",menu=helpmenu) helpmenu.add_command(label="About...",command=callback()) mainloop()
弹出菜单
# coding=gbk from tkinter import * import tkinter.messagebox master=Tk() class Example(Frame):# 继承frame def __init__(self): super().__init__() self.initUI()# 初始化调用initUI函数 def initUI(self): self.master.title("演示鼠标右键跳出菜单") self.menu=Menu(self.master,tearoff=0)# 在窗体上frame创建菜单对象 self.menu.add_command(label="提示",command=self.showClick) self.menu.add_command(label="退出",command=self.onExit) self.master.bind("<Button-3>",self.showMenu)# 窗体鼠标右键函数,调用showMenu函数 self.pack() def showMenu(self,e): self.menu.post(e.x_root,e.y_root) def showClick(self): tkinter.messagebox.showinfo("提示","点上了") def onExit(self): self.quit() master.geometry("250x150") app=Example() master.mainloop()
总结
针对组件
可以利用frame , labelframe 容器组件把相同方向的组件一起定位。
可以容器嵌套容器,让界面整洁
鼓励用相对位置来定位。