我爱编程

Python 编程之Tkinter的使用01

2018-06-21  本文已影响270人  TitanCoder
Snip20180620_1.png

一. Tkinter介绍

需要注意: Python3.x版本使用的库名为 tkinter,即首写字母T为小写

import tkinter

1. 主窗口

# 主窗口
import tkinter

# 创建主窗口
window = tkinter.Tk()

# 设置标题
window.title('Titanjun')

# 设置窗口大小
window.geometry('400x400')

# 进入消息循环
window.mainloop()

效果如下

Snip20180620_5.png

主窗口除了上述方法之外还有以下方法

# 框体大小的可调性, 分别表示x, y方向的可变性
window.resizable(0, 0)

# 退出
window.quit()

# 刷新页面
window.update()

二. Tkinter组件

控件 描述
Label 标签控件, 可以显示文本和位图
Button 按钮控件, 在程序中显示按钮
Entry 输入控件;用于显示简单的文本内容
Checkbutton 多选框控件;用于在程序中提供多项选择框
Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Canvas 画布控件;显示图形元素如线条或文本
Listbox 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton 菜单按钮控件,由于显示菜单项。
Menu 菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message 消息控件;用来显示多行文本,与label比较类似
Radiobutton 单选按钮控件;显示一个单选的按钮状态
Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框
Text 文本控件;用于显示多行文本
Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow 一个窗口布局管理的插件,可以包含一个或者多个子控件
LabelFrame 一个简单的容器控件, 常用与复杂的窗口布局
tkMessageBox 用于显示你应用程序的消息框

如果之前做过H5前端开发或者iOS等页面相关开发工作的, 应该能到, 其实这些组件和其他开发语言提供的组件功能相似, 属性也类似, 下面我们先看一下一些通用的属性介绍

属性值 属性描述
bg 控件的背景颜色
fg 组件中的字体颜色
font 设置文本的字体样式和字号
height 设置控件高度
width 设置控件宽度
bd 设置控件边框的大小, 默认2个像素
relief 设置边框样式, 有falt, sunken, raised, groove, ridge, 默认flat
text 设置文本内容
anchor 瞄点, 控制文本的位置, 默认居中(可选: n北, e东, s南, w西, center居中, ne se, sw, nw)
justify 显示多行文本的时候,设置不同行之间的对齐方式(left, right, center)
wraplength 根据宽度限制控件每行显示的字符的数量
underline 下划线, 默认没有; 取值就是带下划线的字符串索引,为 0 时,第一个字符带下划线
padx 在x轴方向上的内边距(padding),是指控件的内容与控件边缘的距离
pady 在y轴方向上的内边距(padding)

1. Label控件

label = tkinter.Label(window,
                      text="我是一只小鸭子",
                      bg='#999999',
                      fg='white',
                      font=('黑体', 13),
                      justify='center',
                      height=5,
                      width=30,
                      anchor='n',
                      # wraplength=30
                      underline=3,
                      bd=3,
                      relief='flat'
                      )
#显示出来
label.pack()

显示效果

Label效果.png

部分属性介绍

2. Button控件

# 设置标题
window.title('Titanjun')

# 设置窗口大小
window.geometry('400x400')

# 创建按钮
button1 = tkinter.Button(window,
                         text='按钮1',
                         bg='orange',
                         height=3,
                         width=20,
                         bd=3,
                         relief='sunken',
                         activebackground='orange',
                         activeforeground='white',
                         command=action1
                         )
button1.pack()


button2 = tkinter.Button(window, text='Titanjun', height=3, command=window.quit())
button2.pack()

# 进入消息循环
window.mainloop()

效果样式

Python按钮.png

部分属性介绍

3. Entry输入

输入控件, 用于显示简单的文本内容, 和iOS中的UITextField一样, 示例如下

vari = tkinter.Variable()
entry = tkinter.Entry(window, textvariable=vari)
entry.pack()

# 设置值
vari.set('very good')
# 取值
print(vari.get())
print(entry.get())

# 只读输入框
vari2 = tkinter.Variable()
entry2 = tkinter.Entry(window, textvariable=vari2, state='disabled')
entry2.pack()

# 设置值
vari2.set('very bad')
print(vari2.get())

# 密码输入框, 无论输入什么都显示密文
vari3 = tkinter.Variable()
entry3 = tkinter.Entry(window, textvariable=vari3, show='@', bg='red', fg='white')
entry3.pack()

效果样式

Python输入框.png

监听输入框内文字的改变

# 主窗口
import tkinter

# 验证输入的文字
def varileText():
    text = entry4.get()
    if text == '1':
        print('对喽')
        return True
    print('错漏')
    return False

#
def testInvaild():
    print('invaildCommanf被调用')
    return True

# 创建主窗口
window = tkinter.Tk()
# 设置标题
window.title('Titanjun')
# 设置窗口大小
window.geometry('400x400')


# 验证输入的内容是否符合要求
vari4 = tkinter.Variable()
entry4 = tkinter.Entry(window, textvariable=vari4, validate='key', validatecommand=varileText, invalidcommand=testInvaild)
entry4.pack()

# 进入消息循环
window.mainloop()

4. Text多行文本

4-1. 插入文本/控件/图片

text = Text(window, bg='yellow', width=40, height=10)
#INSERT索引表示在光标处插入
text.insert(INSERT,'I Love')
#END索引号表示在最后插入
text.insert(END,' you')
text.pack()

def show():
    print('好了, 你赢了')

# text还可以插入按钮  图片等
b1 = Button(text, text='点我点我', command=show)
# 在text创建组件的命令
text.window_create(INSERT, window=b1)

4-2. 索引值

from tkinter import *
root = Tk()
text1=Text(root,width=30,height=3)
text1.insert(INSERT,'index的练习')
#1.2到1.5的范围之间
print(text1.get(1.2,1.5))

4-3. Text中的Tags

Tags通常用于改变Text组件中内容的样式和功能,你可以修改文本的字体,尺寸和颜色,另外Tags还允许你将文本、嵌入的组件和图片与键盘相关联,除了user-defined tags(用户自定义的Tags)

text.insert(INSERT, '自定义标签的名字')

#第一个参数为自定义标签的名字
#第二个参数为设置的起始位置,第三个参数为结束位置
#第四个参数为另一个位置
text.tag_add('tag1', '1.7', '1.12', '1.14')

#用tag_config函数来设置标签的属性(这里不要用简写, 否则报错)
text.tag_config('tag1', font=17, background='blue', foreground='red')
# text.tag_config('tag1', bg='yellow', fg='red')
#新的tag会覆盖旧的tag

4-4. 带滚动条

text = Text(window, bg='yellow', width=100, height=10)
# 添加右侧滚动条
scroll = Scrollbar()
# side放到窗体的那一侧   fill填充
scroll.pack(side=RIGHT, fill=Y)
text.pack(side=RIGHT, fill=Y)
# 两者关联
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)

str = '''致橡树--舒婷

..........此处省略N个字...........

'''

text.insert(INSERT, str)

效果样式

滚动Text.png

5. Checkbutton多选按钮

def update():
    message = ''
    if tag1.get() == True:
        message += 'titan \n'
    if tag2.get() == True:
        message += 'jun \n'
    if tag3.get() == True:
        message += 'coder \n'

    #清除text中的所有内容
    text.delete(0.0, END)
    # 插入新的文本内容
    text.insert(INSERT, message)

# 要绑定的变量
tag1 = BooleanVar()
check1 = Checkbutton(window, text = 'Titan', variable = tag1, command = update)
check1.pack()

tag2 = BooleanVar()
check2 = Checkbutton(window, text = 'Juned', variable = tag2, command = update)
check2.pack()

tag3 = BooleanVar()
check3 = Checkbutton(window, text = 'Coder', variable = tag3, command = update)
check3.pack()


text = Text(window, bg = 'orange', width = 50, height = 5)
text.pack()

效果样式

[图片上传失败...(image-fbcbfa-1543211943603)]

6. Radiobutton单选框

Radiobutton为单选按钮,即在同一组内只能有一个按钮被选中,每当选中组内的一个按钮时,其它的按钮自动改为非选中态,与其他控件不同的是:它有组的概念

def selectorAction():
    print(tag.get())

# 一组单选框要绑定同一个变量
tag = IntVar()
radio1 = Radiobutton(window, text = 'one', value = 23, variable = tag, command = selectorAction)
radio1.pack()
radio2 = Radiobutton(window, text = 'two', value = 32, variable = tag, command = selectorAction)
radio2.pack()
radio3 = Radiobutton(window, text = 'ten', value = 10, variable = tag, command = selectorAction)
radio3.pack()

效果样式

python单选框.png

未完待续, 后期会继续更新其他控件的相关介绍..........


上一篇下一篇

猜你喜欢

热点阅读