美文网首页
【Note】MV-python基础系列 之 窗口视窗Tkinte

【Note】MV-python基础系列 之 窗口视窗Tkinte

作者: 火禾子_ | 来源:发表于2018-12-05 11:58 被阅读0次

Tkinter是使用 python 进行窗口视窗设计的模块. 简单的构造, 多平台, 多系统的兼容性, 能让它成为让你快速入门定制窗口文件的好助手。它在 python 窗口视窗模块中是一款简单型的,所以用来入门、熟悉窗口视窗的使用, 非常有必要。

1、Label & Button 标签和按钮

Label

import tkinter as tk
# 定义 window 窗口
window = tk.Tk()
# 定义 window 的一些属性
window.title('my window')
window.geometry('200x100')
# 书写窗口内容
  # 建立一个用来描述的标签 tk.Label
l = tk.Label(window,
             text = 'OMG! This is TK!',
             bg = 'green',
             font = ('Arial', 12),
             width = 15,
             height = 2
             )
l.pack()
# 激活窗口
window.mainloop()

Button
也可以通过变量的形式控制标签的显示, 引入按钮 tk.Button 的概念, 每点一次按钮, 标签变化一次. 用一下内容替换上面的标签. 并把需要变化的文字存成变量 var:

import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x100')
# 定义点击按钮时,执行的命令
on_hit = False
def hit_me():
    global on_hit
    if on_hit == False:
        on_hit = True
        var.set('you hit me')
    else:
        on_hit = False
        var.set('')
# 设置 Label
var = tk.StringVar()
l = tk.Label(window,
             textvariable = var,
             bg = 'green',
             font = ('Arial', 12),
             width = 15,
             height = 2
             )
l.pack()
# 设置 Button
b = tk.Button(window,
              text = 'hit me',
              width = 15,
              height = 2,
              command = hit_me
              )

b.pack()

window.mainloop()
2、Entry & Text 输入,文本框
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x200')
# 创建按钮分别触发两种情况
def insert_point():
    var = e.get()
    t.insert('insert', var)
def insert_end():
    var = e.get()
    t.insert('end', var)
b1 = tk.Button(window, text = 'insert point',
               width = 15, height = 2,
               command = insert_point)
b1.pack()
b2 = tk.Button(window, text = 'insert end',
               width = 15, height = 2,
               command = insert_end)
b2.pack()
# 创建输入框 entry,用户输入任何内容都显示为 *
e = tk.Entry(window, show = '*')
e.pack()
t = tk.Text(window, height = 2)
t.pack()
# 激活窗口
window.mainloop()

测试一下
第一次:在entry中输入tkinter,在text中输入0000并将光标定位在中间位置,点击insert point


第二次:点击insert end
3、Listbox 列表部件
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x200')
# 创建一个 label 用于显示
var1 = tk.StringVar()
l = tk.Label(window, bg = 'yellow', width = 4, textvariable = var1)
l.pack()
# 创建一个方法,用于按钮的点击事件
def print_selection():
    value = lb.get(lb.curselection())  # 获取当前选中的文本
    var1.set(value)                    # 为 label 设置值
b1 = tk.Button(window, text = 'print selection',
               width = 15, height = 2,
               command = print_selection)
b1.pack()
# 创建一个 Listbox 和变量 var2,并将 var2 的值赋给 Listbox
var2 = tk.StringVar()
var2.set((11, 22, 33, 44))
lb = tk.Listbox(window, listvariable = var2)
     # 创建一个 list 并将值循环添加到 Listbox 控件中
list_items = [1, 2, 3, 4]
for item in list_items:
    lb.insert('end', item)
lb.insert(1, 'first')
lb.insert(2, 'second')
lb.delete(2)
lb.pack()
# 激活窗口
window.mainloop()
4、Radiobutton 选择按钮
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x200')
# 该功能用来对选择的 radiobutton 进行操作.
# print_selection 功能就是选择了某个 radiobutton 后会在屏幕上打印的选项.
def print_selection():
    l.config(text='you have selected ' + var.get())
# 首先定义一个 var 用来将 radiobutton 的值和 Label 的值联系在一起
# 然后创建一个radiobutton部分:
var = tk.StringVar()
l = tk.Label(window, bg='yellow', width=20, text='empty')
l.pack()
r1 = tk.Radiobutton(window, text = 'Option A',
                    variable = var, value = 'A',  # 代表:当我们鼠标选中了其中一个选项,把value的值A放到变量var中,然后赋值给variable
                    command = print_selection)
r1.pack()
r2 = tk.Radiobutton(window, text='Option B',
                    variable=var, value='B',
                    command=print_selection)
r2.pack()
r3 = tk.Radiobutton(window, text='Option C',
                    variable=var, value='C',
                    command=print_selection)
r3.pack()
# 激活窗口
window.mainloop()
5、Scale 尺度
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x200')
# 触发功能
l = tk.Label(window, bg='yellow', width=20, text='empty')
l.pack()
def print_selection(v):
    l.config(text='you have selected ' + v)
# scale 部件
s = tk.Scale(window, label='try me', from_=5, to=11, orient=tk.HORIZONTAL,
             length=200, showvalue=0, tickinterval=2, resolution=0.01, command=print_selection)
s.pack()
# 激活窗口
window.mainloop()

Scale 参数详解:

  • 参数label是指scale部件的名称,即在这里scale部件名称为try me
  • 参数from_=5,to=11的意思就是从5到11,即这个滚动条最小值为5,最大值为11(这里使用from_是因为在python中有from这个关键词)
  • 参数orient=tk.HORIZONTAL在这里就是设置滚动条的方向,如我们所看到的效果图,这里HORIZONTAL就是横向。
  • 参数length这里是指滚动条部件的长度,但注意的是和其他部件width表示不同,width表示的是以字符为单位,比如width=4,就是4个字符的长度,而此处的length=200,是指我们常用的像素为单位,即长度为200个像素
  • 参数resolution=0.01这里我们可以借助数学题来理解,我们做的很多数学题都会让我们来保留几位小数,此处的0.01就是保留2位小数,即效果图中的5.00 9.00等等后面的两位小数,如果保留一位就是resolution=0.1 这里的showvalue就是设置在滚动条上方的显示。
  • 参数showvalue=0显示的就是效果图,上方无结果显示,如果改为showvalue=1,则会显示为指定信息。
  • 参数tickinterval设置的就是坐标的间隔,此处为tickinterval=2,显示的即为效果图中的5.00 7.00 9.00 11.00 如果改为tickinterval=3则为5.00 8.00 11.00。
6、Checkbutton 勾选项
7、Canvas 画布
8、Menubar 菜单
9、Frame 框架
10、messagebox 弹窗
11、pack grid place 放置位置

相关文章

网友评论

      本文标题:【Note】MV-python基础系列 之 窗口视窗Tkinte

      本文链接:https://www.haomeiwen.com/subject/nwpicqtx.html