Python Tkinter 学习历程 一
一丶一个简单的程序
from tkinter import * #引入所有类
#查看tk版本
#tkinter._test()
root = Tk(); #对这个类进行实例化 w1 = Label(root,text="我是来搞笑的啦",background = "green" ) #组件 w2 = Label(root,text="我是来搞笑的啦",background = "red" ) w1.pack();#布局
w2.pack(side=TOP,expand = NO,fill=BOTH); #红色位置应该在下面的,但是在pack设置了参数,就可以进行布局处理了
root.mainloop() #事件循环
#关于更多的pack参数,请看Python源码注释,pack不能同时和grid布局同时使用,...
"""Pack a widget in the parent widget. Use as options:
after=widget - pack it after you have packed widget
anchor=NSEW (or subset) - position widget according to
given direction
before=widget - pack it before you will pack widget
expand=bool - expand widget if parent size grows
fill=NONE or X or Y or BOTH - fill widget if widget grows
in=master - use master to contain this widget
in_=master - see 'in' option description
ipadx=amount - add internal padding in x direction
ipady=amount - add internal padding in y direction
padx=amount - add padding in x direction
pady=amount - add padding in y direction
side=TOP or BOTTOM or LEFT or RIGHT - where to add this widget.
"""
效果:

二丶点击事件绑定(1)
from tkinter import * #引入所有类
def xinlabel():
global xin
s = Label(xin,text ="I love python!")
s.pack() xin = Tk();
b1 = Button(xin,text="波波",command=xinlabel)
b1.pack()
xin.mainloop()
效果:

三丶界面简单美化
from tkinter import * #引入所有类
xin = Tk();
b1 = Button(xin,text="波波")
b1['width'] = 20
b1['height'] = 4
b1.pack()
b2 = Button(xin,text="BOBO")
b2['width'] = 25
b2['background'] = 'red'
b2.pack()
xin.mainloop()
"""
1.关于按钮,我们重点理解的就是它如何和事件进行绑定 的。
2.当然一些其他属性用来美化按钮也很重要。
"""
效果:

四 . grid布局
""""brid布局"""
from tkinter import *
xin = Tk()
Label(xin,text = "账号:").grid(row=0,sticky=W)
#Entry 输入框,row 第几行
#sticky默认的空间会在网格中居中显示。你可以使用sticky选项去指定对齐方式,可以选择的值有:N/S/E/W,分别代表上/下/左/右。如果你想让label靠左显示,你可以设置stricky的值为W
#column 相当于css的padding-left ^_^ 吧
Entry(xin).grid(row=0,column=1,sticky=E)
Label(xin,text = "密码:").grid(row=1,sticky=W)
Entry(xin).grid(row=1,column=1,sticky=E)
Button(xin,text=" 登录 ").grid(row=2,column=1,sticky=E)
xin.mainloop()
效果

五丶事件
事件是什么?, event 是事件的英文表述,事件常用的函数是bind ,用法: 窗体对象.bind(事件类型,回调函数)
from tkinter import *
def xinlabel (event):
#global xin
s = Label(xin,text="事件函数!")
s.pack(); xin = Tk();
b1 = Button(xin,text="点我弹出文字1");
b2 = Button(xin,text="点我弹出文字2");
#特别理解好b1 = 那个Button,就绑定那个事件,也就是编程中的 对象 , 不是生活中的对象
b1.bind("<Button-1>",xinlabel)
b1.pack()
b2.pack()
xin.mainloop()
"""
bind
第一个参数是绑定<Button-1>按钮,前面是事件对象,其中1,2,3 分别代表鼠标左键,中,右
第二个参数是函数名,不要带任何标点符号,不然出错
<KeyPress-A>表示 A 键被按下,其中的 A 可以换成其他 的键位。
<Control-V>表示按下的是 Ctrl 和 V 键,V 可以换成其他 键位。
<F1>表示按下的是 F1 键,对于 Fn 系列的,都可以随便
"""
效果和二一样的

六丶登陆事件
""""登陆框"""
from tkinter import *
#定义一个注册方法
def reg():
s1 = e1.get() #获取e1输入框的内容
s2 = e2.get()
t1 = len(s1)
t2 = len(s2)
if s1 =='' and s2 =='':
c['text'] =='登陆成功' #显示内容
else:
c['text'] == "用户名或密码错误!"
e1.delete(0,t1) #end参数可以清空内容 和t1 亿元
e2.delete(0,t2)
root = Tk() #实例化一个对象
l = Label(root,text = "用户名:") #创建一个Label标签
l.grid(row = 0,column = 0,sticky = W) #布局 e1 = Entry(root) #创建一个输入框
e1.grid(row = 0, column = 1,sticky = E) l2 = Label(root,text="密码:")
l2.grid(row = 1 , column = 0,sticky = W ) e2 = Entry(root)
e2['show'] = '*' #密码用 show = '*' 就可以隐藏了
e2.grid(row = 1, column = 1,sticky = E) b = Button(root,text="登陆",command = reg ) #按钮 等于reg 方法
b.grid(row = 2,column = 1,sticky = E) #显示登陆内容
c = Label(root,text='')
c.grid(row = 3)
root.mainloop()
效果同上登陆框
七丶菜单
"""菜单"""
from tkinter import *
root = Tk()
#创建一个一级菜单对象
menubar = Menu(root)
#创建一个一级子菜单
FileMenu = Menu(menubar, tearoff=False) # tearoff=False 表示这个菜单不可以被拖拽出来
#新建一个子菜单列
FileMenu.add_command(label='打开')
FileMenu.add_command(label='导入')
#一个下拉菜单的分割线
FileMenu.add_separator()
FileMenu.add_command(label='退出')
#为一级创建多级菜单 , 参数2为 2 级菜单对象 参考第七行
menubar.add_cascade(label=' 文件 ', menu = FileMenu)
#root['menu'] = menubar #功能同下
root.config(menu=menubar) mainloop()
效果:

八丶消息框
"""消息框"""
from tkinter.messagebox import *
#showinfo(title="你好",message="2017")
#$print("info", showinfo("Spam", "Egg Information"))
#print("warning", showwarning("Spam", "Egg Warning"))
#print("error", showerror("Spam", "Egg Alert"))
#print("question", askquestion("Spam", "Question?"))
#print("proceed", askokcancel("Spam", "Proceed?"))
#print("yes/no", askyesno("Spam", "Got it?"))
#print("yes/no/cancel", askyesnocancel("Spam", "Want it?"))
#print("try again", askretrycancel("Spam", "Try again?"))
t = askyesno("Spam", "Got it?")
if t :
print("")
else:
print("")
Python Tkinter 学习历程 一的更多相关文章
- Python Tkinter 学习成果:点歌软件music
笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...
- Python Tkinter学习笔记
介绍 入门实例 显示一个窗口,窗口里面有一个标签,显示文字 import tkinter as tk # 一个顶层窗口的实例(Top Level),也称为根窗口 app = tk.Tk() # 设置窗 ...
- Python Tkinter学习(1)——第一个Tkinter程序
注:本文可转载,转载请注明出处:http://www.cnblogs.com/collectionne/p/6885066.html.格式修改未完成. Tkinter资料 Python Wiki, T ...
- Python tkinter 学习记录(一) --label 与 button
最简的形式 from tkinter import * root = Tk() # 创建一个Tk实例 root.wm_title("标题") # 修改标题 root.mainloo ...
- python tkinter学习——tkinter部件1
tkinter部件 一.Tk() & Label() & Button() 1,Tk() 窗口 用Tk()创建窗口对象: #文件名:test1.py import tkinter as ...
- python tkinter学习——布局
目录 一.pack() 二.grid() 三.place() 四.Frame() 正文 布局 一.pack() pack()有以下几个常用属性: side padx pady ipadx ipady ...
- python 2 学习历程(一)
在用户输入字符串的时候,有时会带有一些其他的字符,例如常见的空格 除非在网页或者某个位置声明了空格也算字符,或者一些账号等安全程度较高的环节,多了一个空格很少有人会注意到,并且愿意即时改正它们,那么这 ...
- python GUI学习——Tkinter
支持python的常见GUI工具包: Tkinter 使用Tk平台 很容易得到 半标准 wxpython 基于wxWindows.跨平台越来越流行 Python Win 只能在Windows上使用 使 ...
- python爬虫学习 —— 总目录
开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...
随机推荐
- Memcached incr 与 decr 命令
Memcached incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作. incr 与 decr 命令操作的数据必须是十进制的32位无符号整数. 如果 key 不存在 ...
- phpstorm 右下角显示updating indices,一直有任务卡着
其实就是生成的这个node_modules目录内文件太多了,选中node_modules这个目录右键,选择Excluded 一直在加载忽略掉这个文件就可以了
- Cookie和Session的工作原理及比较
一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...
- SQL 2008R2还原对于服务器失败 备份集中的数据库与现有数据库 3154错误
以前用sql server 2005的时候就遇到过类似的问题,数据库在别的服务器上备份后,在本机无法还原,这次终于找到了解决方案,网上的没有找到类似的,希望能帮到大家! 原因分析:在SQL Serve ...
- guava的事件发布订阅功能
事件的重要性,不用说很重要,在很多时候我们做完一个操作的时候,需要告知另外一个对象让他执行相应操作,比如当用户注册成功的时候,需要抛出一个注册成功的事件,那么有监听器捕获到这个事件,完成后续用户信息初 ...
- poj-3046-dp
Ant Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6829 Accepted: 2514 Desc ...
- 原生javascript-日期年,月,日联动选择
在线例子:http://lgy.1zwq.com/dateSwitch/ 月份的判定,由于涉及到过多了判定条件,如果用if else会大大降低性能,建议用switch 语法 getDays:funct ...
- Python 常用 PEP8 编码规范
Python 常用 PEP8 编码规范 代码布局 缩进 每级缩进用4个空格. 括号中使用垂直隐式缩进或使用悬挂缩进. EXAMPLE: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- main函数的参数:argc和argv
程序一般是从main函数开始执行的,main函数标准格式: int main(int argc,char **argv) 其中argc是来自shell(或CMD)的参数的个数,argv是char型的二 ...
- asp.net连接MySQL数据库错误-Out of sync with server
问题 网上说:http://wenda.haosou.com/q/1386389928069965 昨晚这个问题真的费了我不少时间(晚上9到凌晨2点),网上找解决方案,然后一个个尝试,没有成功.准备放 ...