一、Tkinter模块的基本使用

1)实例化窗口程序

import tkinter as tk
app = tk.Tk()
app.title("FishC Demo")
app.mainloop()

2)窗口生成一个标题文本

import tkinter as tk
# 第一步实例化tk,用于容纳整个程序
app = tk.Tk()
app.title("FishC Demo") # 设置标题栏 # 第二步,用于显示文本,或图片
thelabel =tk.Label(app,text="我的第二个窗口程序") # Label 实例化标签
thelabel.pack() # 用于自动调节组件的尺寸 # 窗口的组事件循环
app.mainloop()

3)用类来实现简单的窗口

import tkinter as tk

class App:
def __init__(self,master):
frame = tk.Frame(master)
frame.pack() self.hi_there = tk.Button(frame,text='打招呼',fg = 'blue')
self.hi_there.pack() root = tk.Tk()
app = App(root)
root.mainloop()

4)类中,创建点击方法,修改文本位置,及背景方法

import tkinter as tk

class App:
def __init__(self,master):
frame = tk.Frame(master)
frame.pack(side = tk.LEFT,padx = ,pady = )
self.hi_there = tk.Button(frame,text='打招呼',bg = 'blue',fg = 'white',command=self.say_hi)
self.hi_there.pack()
def say_hi(self):
print('欢迎来到GUI编程') root = tk.Tk()
app = App(root)
root.mainloop()

5)添加图片功能

from tkinter import *

root = Tk()
textlabel = Label(root,text='你勇敢吗!')
textlabel.pack(side = LEFT) photo = PhotoImage(file = "1.png")
imgLabel = Label(root,image=photo)
imgLabel.pack(side = RIGHT) mainloop()

6)对文字属性编辑

from tkinter import *

root = Tk()
textlabel = Label(root,text='你勇敢吗!,\n敢来吗',justify=LEFT,padx=) # justify=LEFT 左对齐 padx= 边距是10
textlabel.pack(side = LEFT) photo = PhotoImage(file = "1.png")
imgLabel = Label(root,image=photo)
imgLabel.pack(side = RIGHT) mainloop()

7)设置成背景图片

from tkinter import *

root = Tk()
photo = PhotoImage(file='1.jpg')
theLabel = Label(root,
text="the beautiful girl",
justify= LEFT,
image=photo,
compound=CENTER,
font=("宋体",),
fg="black")
theLabel.pack()
mainloop()

二、Button组件

1)Button点击触发事件

from tkinter import *
def callback():
var.set("吹吧,我才不信")
pass root = Tk() frame1 = Frame(root)
frame2 = Frame(root) var = StringVar()
var.set("你勇敢吗!,\n敢来吗")
textlabel = Label(frame1,
textvariable=var,
justify=LEFT,
padx=) # textvariable是变量字符串 justify=LEFT 左对齐 padx= 边距是10
textlabel.pack(side = LEFT) photo = PhotoImage(file = "1.png")
imgLabel = Label(frame1,image=photo)
imgLabel.pack(side = RIGHT) theButton = Button(frame2,text="确定,你就点啊",command = callback)
theButton.pack() frame1.pack(padx=,pady=)
frame2.pack(padx=,pady=) mainloop()

2)记录Button的点击记录事件

from tkinter import *

root = Tk()

v = IntVar()

c = Checkbutton(root,text="测试一下",variable=v)    # variable=v 表示按钮状态是否被按下
c.pack() l = Label(root,textvariable=v) # 记录选中状态
l.pack() mainloop()

3)Button点击事件列表应用

from tkinter import *

root = Tk()

GIRLS = ["西施","苍老师",'东施']

v = []

for girl in GIRLS:
v.append(IntVar())
b = Checkbutton(root,text=girl,variable=v[-])
b.pack(anchor=W) # 名字左对齐 mainloop()

4)互斥事件

from tkinter import *

root = Tk()

v = IntVar()

Radiobutton(root,text='One',variable=v,value=).pack(anchor=W)
Radiobutton(root,text='Two',variable=v,value=).pack(anchor=W)
Radiobutton(root,text='Threr',variable=v,value=).pack(anchor=W) mainloop()

5)for循环使用互斥事件和按钮的多样式

from tkinter import *

root = Tk()

LANGS=[("python",),
("java",),
("php",),
("ruby",)] v = IntVar()
v.set() for lang,num in LANGS:
b = Radiobutton(root,text=lang,variable=v,value=num,indicatoron=False) # indicatoron=False 设置点击的样式,默认的小原点
b.pack(fill=X) # 按钮横向填充
mainloop()

6)选择回答选项设置

from tkinter import *

root = Tk()

group = LabelFrame(root,text="最好的脚本语言是?",padx=,pady=)
group.pack(padx=,pady=) LANGS=[("python",),
("java",),
("php",),
("ruby",)] v = IntVar()
# v.set() # 这个是默认选择第一个 for lang,num in LANGS:
b = Radiobutton(group,text=lang,variable=v,value=num) # indicatoron=False 设置点击的样式,默认的小原点
b.pack(anchor=W)
mainloop()

三、Entry输入框方法

1)初探输入框

from tkinter import *

root = Tk()

e = Entry(root)
e.pack(padx=,pady=) mainloop()

2)生成默认输入框文本

from tkinter import *

root = Tk()

e = Entry(root)
e.pack(padx=,pady=) e.delete(,END)
e.insert(,"默认文本...") mainloop()

3)获取用户交互点击信息

from tkinter import *

root = Tk()

Label(root,text="作品:").grid(row=,column=)
Label(root,text="作者:").grid(row=,column=) e1 = Entry(root)
e2 = Entry(root)
e1.grid(row=,column=,padx=,pady=)
e2.grid(row=,column=,padx=,pady=) def show():
print("作品:<%s>" % e1.get())
print("作者:<%s>" % e2.get()) Button(root,text="获取信息",width=,command=show)\
.grid(row=,column=,sticky=W,padx=,pady=)
Button(root,text="退出",width=,command=root.quit) \
.grid(row=, column=, sticky=E, padx=, pady=) mainloop()

4)输入框隐藏输入密码功能

from tkinter import *

root = Tk()

Label(root,text="账号:").grid(row=,column=)
Label(root,text="密码:").grid(row=,column=) v1 = StringVar()
v2 = StringVar() e1 = Entry(root,textvariable=v1)
e2 = Entry(root,textvariable=v2,show="*")
e1.grid(row=,column=,padx=,pady=)
e2.grid(row=,column=,padx=,pady=) def show():
print("账号:%s" % e1.get())
print("密码:%s" % e2.get()) Button(root,text="芝麻开门",width=,command=show)\
.grid(row=,column=,sticky=W,padx=,pady=)
Button(root,text="退出",width=,command=root.quit) \
.grid(row=, column=, sticky=E, padx=, pady=) mainloop()

5)输入框正确则保留,错误清空重新输入

from tkinter import *

master = Tk()

def test():
if e1.get() == "python":
print("正确")
return True
else:
print("错误")
e1.delete(,END)
return False v = StringVar()
e1 = Entry(master,textvariable=v,validate="focusout",validatecommand=test)
e2 = Entry(master)
e1.pack(padx = ,pady=)
e2.pack(padx = ,pady=)
mainloop()

6)函数调用使用

#-*-coding: utf- -*-
from tkinter import * master = Tk() def test1():
if e1.get() == "python":
print("正确")
return True
else:
print("错误")
e1.delete(,END)
return False def test2():
print("python被调用了")
return True v = StringVar()
e1 = Entry(master,textvariable=v,validate="focusout",\
validatecommand=test1,invalidcommand=test2)
e2 = Entry(master)
e1.pack(padx = ,pady=)
e2.pack(padx = ,pady=) mainloop()

7)验证函数的额外选项

from tkinter import *

master = Tk()

v = StringVar()
def test(content,reason,name):
if content == "python":
print("正确")
print(content,reason,name)
return True
else:
print("错误")
print(content, reason, name)
return False testCMD = master.register(test)
e1 = Entry(master,textvariable=v,validate="focusout",\
validatecommand=(testCMD,'%P','%v','%W'))
e2 = Entry(master)
e1.pack(padx = ,pady=)
e2.pack(padx = ,pady=) mainloop()

8)实现一个简单的加法计算器

from tkinter import *

master = Tk()

frame = Frame(master)
frame.pack(padx=,pady=) v1 = StringVar()
v2 = StringVar()
v3 = StringVar()
def test(content):
return content.isdigit() testCMD = master.register(test)
e1 = Entry(frame,width=,textvariable=v1,validate="key",\
validatecommand=(testCMD,'%P')).grid(row=,column=)
Label(frame,text="+").grid(row=,column=) e2 = Entry(frame,width=,textvariable=v2,validate="key",\
validatecommand=(testCMD,'%P')).grid(row=,column=)
Label(frame,text="=").grid(row=,column=)
e3 = Entry(frame,width=,textvariable=v3,state="readonly").grid(row=,column=) def calc():
result = int(v1.get()) + int(v2.get())
v3.set(str(result))
Button(frame,text='计算结果',command=calc).grid(row=,column=,pady=)
mainloop()

9)Listbox组件使用,引出滚动条

 实现单一的删除操作

from tkinter import *

master = Tk()
theLB = Listbox(master)
theLB.pack() for item in ['鸡蛋','鸭蛋','鹅蛋','狗蛋']:
theLB.insert(END,item) theButton = Button(master, text="删除它",\
command = lambda x=theLB:x.delete(ACTIVE))
theButton.pack()
# theLB.delete(,END) # 全部删除
mainloop()
theLB = Listbox(master,selectmode=EXTENDED)         # 多选
theLB = Listbox(master,selectmode=SINGLE) # 单选
theLB = Listbox(master,selectmode=SINGLE,height=) # 增加高度

四、滚动条操作

1)Scrikkbar生成滚动条方法

from tkinter import *

root = Tk()
sb = Scrollbar(root)
sb.pack(side=RIGHT,fill =Y) mainloop()

2)另一种 Scale增加精度的滚动条

from tkinter import *

root = Tk()

Scale(root,from_=, to =).pack()
Scale(root,from_=, to =,orient = HORIZONTAL).pack() mainloop()

3)获取该精度的位置

from tkinter import *

root = Tk()

s1 = Scale(root,from_=, to =)
s1.pack()
s2 = Scale(root,from_=, to =,orient = HORIZONTAL)
s2.pack() def show():
print(s1.get(),s2.get()) Button(root,text="获取位置",command =show).pack() mainloop()

4)精度的具体演示

from tkinter import *

root = Tk()

s1 = Scale(root,from_=, to =,tickinterval=,resolution=,length=)
s1.pack()
s2 = Scale(root,from_=, to =,tickinterval=,orient = HORIZONTAL,length=)
s2.pack() mainloop()

五、insert插入功能

1)插入文本

from tkinter import *

root = Tk()

text = Text(root, width=, height=)
text.pack() text.insert(INSERT,"I love \n")
text.insert(END,"YOU") def show():
print("我被点了一下")
b1 = Button(text,text="点我啊",command=show)
text.window_create(INSERT,window=b1)

2)插入图片

from tkinter import *

root = Tk()

text = Text(root, width=, height=)
text.pack() phone = PhotoImage(file = "1.jpg") def show():
text.image_create(END,image=phone) b1 = Button(text,text="点我啊",command=show)
text.window_create(INSERT,window=b1) mainloop()

3)指定位置改变字体颜色

from tkinter import *

root = Tk()

text = Text(root,width=,height=)
text.pack() text.insert(INSERT,"I love FishC.com!") text.tag_add("tag1","1.7","1.12","1.14")
text.tag_config("tag1",background="yellow",foreground="red") mainloop()

4)颜色覆盖,后者覆盖前者

from tkinter import *

root = Tk()

text = Text(root,width=,height=)
text.pack() text.insert(INSERT,"I love FishC.com!") text.tag_add("tag1","1.7","1.12","1.14")
text.tag_add("tag2","1.1","1.9","1.14")
text.tag_config("tag1",background="yellow",foreground="red")
text.tag_config("tag2",foreground="blue") mainloop()

5)绑定事件,超链接

from tkinter import *
import webbrowser root = Tk() text = Text(root,width=,height=)
text.pack() text.insert(INSERT,"I love FishC.com!") text.tag_add("link","1.7","1.16")
text.tag_config("link",foreground="blue",underline=True) def show_arrow_cursor(event):
text.config(cursor="arrow")
def show_xterm_curror(event):
text.config(cursor="xterm")
def click(event):
webbrowser.open("http://www.baidu.com")
text.tag_bind("link","<Enter>",show_arrow_cursor)
text.tag_bind("link","<Leave>",show_xterm_curror)
text.tag_bind("link","<Button-1>",click)
mainloop()

6)检查文本是否发生了变动

from tkinter import *
import hashlib root = Tk() text = Text(root,width=,height=)
text.pack() text.insert(INSERT,"I love FishC.com!")
contents = text.get("1.0",END) def getSig(contents):
m = hashlib.md5(contents.encode())
return m.digest()
sig = getSig(contents) def check():
contents = text.get("1.0", END)
if sig != getSig(contents):
print("警报:内容发生变动")
else:
print("风平浪静") Button(root,text="检查",command=check).pack() mainloop()

7)对文本进行全局收索

from tkinter import *
import hashlib root = Tk() text = Text(root,width=,height=)
text.pack() text.insert(INSERT,"I love FishC.com!") def getIndex(start,index):
return tuple(map(int,str.split(text.index(index),"."))) start = "1.0"
while True:
pos = text.search("o",start,stopindex=END)
if not pos:
break
print("找到啦,位置是:",getIndex(text,pos))
start = pos + "+1c" mainloop()

8)撤销操作,自动插入分隔符

from tkinter import *

root = Tk()

text = Text(root,width=,height=,undo=True)
text.pack() text.insert(INSERT,"I love FishC.com!") def show():
text.edit_undo() Button(root,text="撤销",command=show).pack() mainloop()

9)撤销,一个字符一个字符的删除

from tkinter import *

root = Tk()

text = Text(root,width=,height=,undo=True,autoseparators=False)      # autoseparators 去销自动插入分隔符
text.pack() text.insert(INSERT,"I love FishC.com!") def callback(event): # 绑定事件需要加参数
text.edit_separator() # 人为的插入分割符 text.bind('<Key>',callback) def show():
text.edit_undo() Button(root,text="撤销",command=show).pack() mainloop()

原文链接:http://bbs.fishc.com/thread-59443-1-1.html

GUI的最终选择Tkinter模块初级篇的更多相关文章

  1. GUI的最终选择Tkinter模块练习篇

    一.Canvas画布练习 1)简单的绘制图框 from tkinter import * # 构建一个窗口 tk = Tk() # 画布 canvas= Canvas(tk,width=,height ...

  2. Python之GUI的最终选择(Tkinter)

    首先,Tkinter是Python默认的GUI库,想IDLE就是用Tkinter设计出来的,因此直接导入Tkinter模块就可以啦 1 import tkinter (1)Tkinter初体验: 1 ...

  3. GUI的最终选择 Tkinter(一):Tkinter最初体验

    EasyGui就是一个简单的文字交互界面模块,从今天开始来开始学习Tkinter Tkinter是Python标准的Gui库,它实际是建立在Tk技术上的,Tk最初是为Tcl(一门工具名语言)所涉及的, ...

  4. GUI的最终选择 Tkinter(五):Text用法

    Text组件 绘制单行文本使用Label组件,多行选使用Listbox,输入框使用Entry,按钮使用Button组件,还有Radiobutton和Checkbutton组件用于提供单选或多选的情况, ...

  5. GUI的最终选择 Tkinter(四):Entry、Listbox、Scrollbar和Scale组件

    Entry组件 Entry组件就是平时所说的输入框.输入框是程序员用到的最多的一个程序,例如在输入账号和密码的时候需要提供两个输入框,用于接收密码的输入框还会有星号将实际输入的内容隐藏起来. Tkin ...

  6. GUI的最终选择 Tkinter(九):事件

    Tkinter事件处理 Tkinter应用会花费大部分的时间在处理事件循环中(通过mainloop()方法进入),事件可以是触发的鼠标,键盘的操作,管理窗口触发的重绘事件(在多数情况下都是有用户间接引 ...

  7. GUI的最终选择 Tkinter(七):菜单Menu组件、Menubutton组件、OptionMenu组件

    Menu组件 今天说的Menu组件就是一些菜单组件,开始点点点... Tkinter提供了一个Menu组件,可以实现顶级菜单,下拉菜单和弹出菜单.由于底层是代码实现和优化的,所以不太建议通过按钮和其他 ...

  8. GUI的最终选择 Tkinter(三):Checkbutton组件和Radiobutton组件、LabelFrame组件

    Checkbutton组件 Checkbutton组件就是常见的多选按钮,而Radiobutton则是单选按钮 from tkinter import * root = Tk() v = IntVar ...

  9. GUI的最终选择 Tkinter(二):Label和Button组件

    Label组件 Lable组件是用于界面上输出描述的标签,例如提示用户“您下载的电影含有未成年人限制内容,请满18岁以后点击观看!”,先来上结果图: 在来看下它的代码: from tkinter im ...

随机推荐

  1. json 相关知识

    一:json标准格式: 标准JSON的合法符号:{(左大括号)  }(右大括号)  "(双引号)  :(冒号)  ,(逗号)  [(左中括号)  ](右中括号) JSON字符串:特殊字符可在 ...

  2. CSS3实现图片循环旋转

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. Delphi: TMethod转普通方法为对象方法

    回看旧时代码,以往清楚之记忆渐渐模糊,事隔多年,遗忘正在发生. TMethod方法,当初熟练再看已陌生,再做复习以作备忘. 简言之,它做为一相桥接,将普通事件或方法转换为类方法,其多用于事件动态设置中 ...

  4. c#调用dll接口传递utf-8字串方法

    1. 起源: VCU10之视频下载模块,采用纯python编码实现,c++代码调用pythonrun.h配置python运行环境启动python模块,编译为dll给c#调用,以使界面UI能够使用其中功 ...

  5. Windows如何安装Android SDK

    我们都知道App测试分为Android和IOS两种客户端,当我们测试Android版本的App的时候经常要安装Android环境,那么安装Android SDK 就是必不可少的,接下来我们就来看看如何 ...

  6. swift - 闭包 -定义和使用

    方法一: 1.定义 typealias OpenOrderSuccessResultBlock = ( _ dataArray:[String])->Void 2.类方法实现属性 var bac ...

  7. jq里面关于disable的用法

    //两种方法设置disabled属性$('#areaSelect').attr("disabled",true);$('#areaSelect').attr("disab ...

  8. Service里边启动Activity注意事项

    Intent intentv = new Intent(Intent.ACTION_VIEW); intentv.setData(uri); intentv.putExtra("keepTi ...

  9. 一行代码轻松搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10

    在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题? 百度源代码如下: <!Doctype html& ...

  10. input,textarea在ios和Android上阴影和边框的处理方法(在移动端)

    1.去掉ios上阴影的方法只需要在css文件上添加input,textarea{-webkit-appearance: none;}就可以了 2.在移动端上input和textarea边框问题,也是在 ...