tkinter相关笔记

前言

GUI在之前和今后的工作中都是十分重要的,寒假刚开始,趁着在跑模型(干跑…硬跑…),便不负责任地把它丢到一边,开始入门tkinter。
首先准备看看b站视频,发现莫凡也更了相关,下面先做一些相关笔记。

入门教程笔记

import

import tkinter as tk

window

一切基于窗口。

定义窗口:

window = tk.Tk() # create window

改变窗口名称:

window.title('my window') # change title

改变窗口的尺寸

window.geometry('1000x200') # size A(width)xB(height)

var

用于动态改变文本

var=tk.StringVar()

label

一个展示文本的东西

定义label

l = tk.Label(window,
             text = 'hello my world', # 显示该text
             textvariable = var, # 显示该var对应的文本,而var是可以变化的
             bg = 'green',  # background color
             font=('Arial', 12),
             width = 15,
             height = 2) 
  • 如果要改变label展示出来的文本,我们可以改变var,一般:1. var可能是从其它部件中get()得到的,就比如有一个下面要讲的entity部件,它的作用是定义一个输入框。那么我们输入之后,通过var = entity.get()就可以改变var了。 2.var可能是人为set()的,就比如有一个下面要讲的button部件,点击它一下,就会触发一次函数中的command,那我们可以在command中,对var进行人为的set。(两个例子下面会给)
  • text其实也不是固定的,可以通过label.confit(text=…)来对其进行修改

button

即按钮,每一次点击,会触发一次内部定义的command

定义button

b = tk.Button(window,
              text='hit me', # 按钮上的文本
              width=15,
              height=2,
              command = hit_me,# a function which will run when you hit the botton
              ) # create a botton on window

定义command(hit_me)

on_hit = False # hit flag 
def hit_me():
    global on_hit
    if on_hit == False:
        on_hit = True
        var.set("you hit me") # 这里就是上面说的改变var的第二种方式(var.set())
    else:
        on_hit = False
        var.set("")

radiobutton

和button差不多,一旦点击,除了command function以外,还可以改变var的功能(variable=…, value=…)

r1 = tk.Radiobutton(
    master=window,
    text='Option A', # 该button上面的文本
     ###### if you choose Option A,var will be 'A'
    variable=var, # 需要被修改的var
    value='A', # 修改成什么
    ######
    command=print_selection
)

text

也是一个展示文本的地方,但和label不太一样,它的灵活度更高吧

定义text

t = tk.Text(
    master=window,
    height=2
)

插入文本到光标位置

t.insert('insert',var) # "insert"代表以插入到光标位置的方式插入, var上面介绍过

插入文本到末尾

t.insert('end',var)

插入文本到指定行指定列

def insert_sp():
    var = e.get()  # get text from Entry
    t.insert(1.1 ,var)

entity

跟text差不多,把它理解为 一般登录界面中的输入框!

定义entity

e = tk.Entry(master=window,
             show = "*" # \ '*'
             )

这里的show=“*”,用于输入密码的时候,展示给用户的都是星号。

改变var的第一种方式(get()):输入文本至entity框,然后 entity.get()改变var

var = entity.get() 

Listbox

给定一连串的选项,然后用光标去选择。

定义Listbox

var2 = tk.StringVar()
var2.set((11,22,33,44))  # 先初始化部分选项
lb = tk.Listbox(
    master = window,
    listvariable = var2
)

更新Listbox的选项——insert

list_items = [1,2,3,4]
for item in list_items:
    lb.insert('end', item) # end:末尾
lb.insert(1,'hello') # 1 第一行
lb.insert(2,'world')

更新Listbox的选项——delete

lb.delete(2)

获取用户选择了Listbox提供的选项中的哪一个

value = lb.get(Listbox.curselection())  # 光标位置

scale

滑动条

定义scale

s = tk.Scale(
    master=window,
    label='try me', # title
    from_ = 5, # from...to...
    to = 10,
    orient = tk.HORIZONTAL,
    length = 200,
    showvalue = 0, # default = 0
    tickinterval = 1, # interval
    resolution = 1, # 0.01 两位小数; 1 整数
    command = print_selection # 默认有传入值:selected value
)

猜你喜欢

转载自blog.csdn.net/jokerxsy/article/details/112675402