Day11 用python写UI-聊聊变数类别

今天要讲的是tkinter的变数类别,tkinter 的控制变数可以在某些控见执行的时候,更改内容,有四种控制变数的类别,分别为:
Boolean() 布林值变数,True是1, False是0
DoubleVar() 浮点数,预设值为 0.0
IntVar() 整数,预设值为 0
StringVar() 字串,预设值为空字串" "

♠♣今天的文章大纲♥♦

  • get()参数加变数类别
  • trace()方法

get()参数加变数类别

用StringVar() 字串变数,改变文字内容,定义一个事件,这边因为用get()方法,所以就叫GET事件,假设一开始是空字串,按下按钮後,如果原本label里面没有文字,就更改,将cuteluluWindow加入label,如果label里面有文字,就改回空的,且在label里面用textvariable设定内容是Z字串。

import tkinter as tk

root = tk.Tk()

root.geometry("350x400+200+300")
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('300x300')

def GET():
    if Z.get() == "":
        Z.set("cuteluluWindow")
    else:
        Z.set("")

Z = tk.StringVar() #字串变数

L= tk.Label (root, textvariable=Z,fg="#FFAAD5",bg="#7AFEC6", font=("Algerian","16","bold"),width=25,height=2)
L.pack()

btn = tk.Button(root,text="Click Me",relief="sunken",command=GET)
btn.pack()

root.mainloop()

执行结果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210926/20140047l8757Y6h3A.pnghttps://ithelp.ithome.com.tw/upload/images/20210926/20140047r7n1ITED8b.png

trace()方法

trace顾名思义就是追踪,有两种trace,一种是write,一种是read
首先先示范write

import tkinter as tk

root = tk.Tk()

root.geometry("350x400+200+300")
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('300x300')

def write(*args):
    print(" changing data :",zE.get())

zE = tk.StringVar()#字串变数
entry = tk.Entry(root,textvariable=zE)
entry.pack()
zE.trace("w",write) #"w"就是写入

root.mainloop()

执行结果⬇⬇⬇
边输入就会边在Shell window显示出来
https://ithelp.ithome.com.tw/upload/images/20210926/2014004769A12bnOKE.png
https://ithelp.ithome.com.tw/upload/images/20210926/20140047xUhzzVvsnE.png
https://ithelp.ithome.com.tw/upload/images/20210926/20140047nJMU1bUBz5.png
https://ithelp.ithome.com.tw/upload/images/20210926/20140047HdFwmhw97S.png
https://ithelp.ithome.com.tw/upload/images/20210926/20140047unoYx1ocwU.png
https://ithelp.ithome.com.tw/upload/images/20210926/20140047iZVMIKwvVC.png

接下来是read

import tkinter as tk

root = tk.Tk()

root.geometry("350x400+200+300")
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('300x150')


def callbackW(*args):#*args可以直接传递参数内容,因为目前还不需要传递参数
    zl.set(zE.get())

def callbackR(*args):
    print(" 资料被读取了 ")

def read():
    print(" read the data :",zE.get())

zE = tk.StringVar()#字串变数
entry = tk.Entry(root,textvariable=zE)
entry.pack()
zE.trace("w",callbackW)#如有更改执行这行callbackW
zE.trace("r",callbackR)#如有读取执行这行callbackR

zl = tk.StringVar()#字串变数
lab = tk.Label(root,textvariable=zl)
zl.set(" 显示於此 ")![https://ithelp.ithome.com.tw/upload/images/20210926/20140047se1KNQtmz7.png](https://ithelp.ithome.com.tw/upload/images/20210926/20140047se1KNQtmz7.png)
lab.pack(pady=5,padx=10)

btn = tk.Button(root,text=" read ",command=read)
btn.pack(pady=10)

root.mainloop()

执行结果⬇⬇⬇
这边用了一个set()方法,这方法就是可以按read按钮後,显示在介面上
https://ithelp.ithome.com.tw/upload/images/20210926/20140047h1BL2kGdf5.png
https://ithelp.ithome.com.tw/upload/images/20210926/20140047KbrLx1pKTF.png
https://ithelp.ithome.com.tw/upload/images/20210926/20140047ODChh4H0WV.png


今天的文章就这边,希望大家可以从这边得到需要的东西,明天见罗~~~
/images/emoticon/emoticon30.gif


<<:  #26 JS: HTML DOM Events - Part 4(Start Over Version)

>>:  Day 11 python Pandas

Day 23 Flux

第 23 天 ! 使用 context 来传送,虽然达到了能跟 目标 component 直接对接的...

字串的动次踏次,Ruby 30 天刷题修行篇第四话

大家好,这里是 A Fei,又到了我们愉快的刷题练功时间,前三天的题型和 Number、Array ...

CSS微动画 - 有始有终!心得跟最後动画分享

Q: 第 30 天了,心中有没有很兴奋? A: 好紧张耶.. 最後一天了来个结语~~ 之前从来没有...

Rust-所有权(一)

所有权可以说是Rust核心概念,这让Rust不需要垃圾回收(garbage collector)就可...

30天学会 Python: Day 7-无限轮回

range(start=0, stop, step=1) 用来产生 整数等差数列 的函式,常和今天要...