python tkinter 图形化界面

1.python提供了多个图形开发界面的库:
(1) Tkinter :
Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
(2 )wxPython :
wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。
(3 )Jython :

Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT。Jython可以被动态或静态地编译成Java字节码。


2.Tkinter编程:
Tkinter是内置到python的安装包中,只要安装好python之后就能import Tkinter库,而且 IDEL也是用tkinter编写而成
步骤
导入Tkinter模块
创建控件
指定这个空间的master,即这个控件属于哪一个

告诉GM(genmetry  Manager)有一个控件产生了


3.简单示例
import tkinter
# 创建
win  = tkinter.Tk()
# 设置标题
win.title("awen")
# 设置几何形状(设置大小和位置)
win.geometry("800x800+200+100") # "宽x高+距离屏幕左边缘的距离 + 距离屏幕上边缘的距离"
# 进入消息循环
# 显示窗口
win.mainloop()


4. Tkinter组件
lable 标签控件用来显示文本
(1)属性:
# master 表示父窗体
# text显示文本的内容
# bg背景色   可以是十六进制数,可以是red
# fg字体颜色
# font=("黑体",30) 设置字体样式和大小
# wraplength  指定text文本中多宽进行换行
# justify    设置换行后的对齐方法
# anchor     位置 n北  e东 s南   w西   center居中   ne东北 se东南 sw西南   nw西北
# width宽度   1 表示约一个字符的长度
# height高度   1表示约一个字符的高度
例:
tkinter.Label(win,text="awenyunnnn问问",width=20,height=10,bg="blue",fg="#ffffff",font=("黑体",30),
                       wraplength="300",justify="right",anchor="ne")
显示
label.pack()
button 按钮控件;在程序中显示按钮。

button1 = tkinter.Button(win,text="按钮",bg ="#ffcccc" ,
                         command=func,width=10,height=2)
退出
tkinter.Button(win, text="退出", command=win.quit)
command传递参数
command=lambda:callback(argv..)
entry输入控件;用于显示简单的文本内容

# 绑定控件,操作输入框中的内容
e = tkinter.Variable()
entry1 = tkinter.Entry(win,textvariable=e)
entry1.pack()
获取输入框中的值
#e就代表输入框这个对象
print(e.get())
print(entry1.get())
设置值
e.set("hello world")
练习
点击按钮输出输入框里的内容
text文本控件;用于显示多行文本

#height显示的行数
text = tkinter.Text(win, width=30, height=4)
插入值
text.insert(tkinter.INSERT,str)
combobox 下拉控件
导入ttk
from tkinter import  ttk
绑定变量
str = tkinter.StringVar()
com = ttk.Combobox(win,textvariable = str)
该下拉控件设置数据
com["value"] = ("北京","上海","广州","深圳")
设置默认值
com.current(3)
绑定事件
#绑定事件
def func(event):
    print(com.get())
    print(str.get())


# 绑定事件
com.bind("<>", func)
RadioButton单选按钮控件;显示一个单选的按钮状态

radio1 = tkinter.Radiobutton(win,text="男",command=updata,variable=r,value=1)
radio1.pack()
radio2 = tkinter.Radiobutton(win,text="女",command=updata,variable=r1,value=2)
radio2.pack()
radio3 = tkinter.Radiobutton(win,text="啦啦",command=updata,variable=r1,value=3)
radio3.pack()
绑定一个变量
# 绑定一个变量
r = tkinter.IntVar()
获取选项
def updata():
    print(r.get())
CheckButton多选框控件;用于在程序中提供多项选择框

# 多选框
check1 = tkinter.Checkbutton(win,text="money",variable=hobby1,command=updata)
check1.pack()
check2 = tkinter.Checkbutton(win,text="power",variable= hobby2,command=updata)
check2.pack()
check3 = tkinter.Checkbutton(win,text="beautiful girl",variable=hobby3,command=updata)
要绑定的变量
# 要绑定的变量
hobby1 =  tkinter.BooleanVar()
获取是否选中
check1Var1.get() == True
Listbox列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
创建
lb = tkinter.Listbox(win,selectmode=tkinter.BROWSE)
添加多个元素
items = ["good", "nice", "handsome", "vg", "vn"]
for item in items:
    # 按顺序添加
    lb.insert(tkinter.END,item)
在开始添加
lb.insert(tkinter.ACTIVE,"cool")
删除
参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只删除第一个索引处的内容
# lb.delete(1,5)
#lb.delete(1)
选中
选中   参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只选中第一个索引处的内容
lb.select_set(2,5)
#lb.select_set(2)
取消
lb.select_clear(2,4)
获取列表中元素个数
lb.size()
从列表中取值 
print(lb.curselection())  获得选中的索引项
lb.get(2)
判读一个选项是否被选中
lb.selection_includes(1)
scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间
创建
# 拖动条
scale = tkinter.Scale(win,from_ = 0,to = 100,orient = tkinter.HORIZONTAL,tickinterval = 10,length = 200)
参数说明
供用户通过拖拽指示器改变变量的值,可以水平,也可以竖直
from_ 设置起始值
to 设置结束值
orient  设置方向tkinter.HORIZONTAL  水平
        tkinter.VERTICAL   竖直
length 水平时表示宽度,竖直时表示高度
tickinterval  选择值将会为该值的倍数,(Progress 标度)
设置值
scale.set(20)
获取当前长度
scale.get()
Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
创建
t = tkinter.StringVar()
sb = tkinter.Spinbox(win,from_= 0 ,to = 100,increment = 2,textvariable = t,command = updata)
设置值
t.set(50)


frame框架控件;在屏幕上显示一个矩形区域,多用来作为容器

# 创建空的框架
frame  = tkinter.Frame(win,bg="#ff0000")
#声名左侧框架
frame_l  = tkinter.Frame(frame)
tkinter.Label(frame_l,text="左上",height =5,width = 20,bg = "#ffcccc").pack(side = tkinter.TOP)
tkinter.Label(frame_l,text="左下",bg = "#ccccff").pack(side = tkinter.BOTTOM)
frame_l.pack(side = tkinter.LEFT)


你可能感兴趣的:(tkinter)