xia的小窩

一起來coding和碼字吧

0%

變數類別

變數類別基本概念

就是把Widget控件的參數以變數處理時,必須借助tkinker模組的變數類別

1
2
3
4
x = IntVar()
x = DoubleVar()
x = StringVar()
x = BooleanVar()

get() 與 set()

做出按鈕顯示及收回的效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from tkinter import *

def btn_hit():
global msg_on
if msg_on == False:
msg_on = True
x.set("我顯示出來囉")
else:
msg_on = False
x.set(" ")

# 這邊如果使用get......
# if x.get == "":
# x.set("我顯示出來囉")
# else:
# x.set("")

root = Tk()
root.title("Python-tkinter")
msg_on = False

x = StringVar()

label = Label(root, textvariable = x,
fg = "blue", bg = "lightyellow",
width = 25, height = 2)

label.pack()

btn = Button(root, text = "點我", command = btn_hit)
btn.pack()

root.mainloop()

結果

追蹤模式trace()使用 w

更改時更動輸出結果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from tkinter import *

def callback(*args):
print("顯示更動: ", xE.get())


root = Tk()
root.title("Python-tkinter")

xE = StringVar()
entry = Entry(root, textvariable = xE)
entry.pack(padx = 5, pady = 10)

xE.trace("w", callback)


root.mainloop()

結果

當然也可以同步顯示

1
2
3
4
5
6
7
8
9
def callback(*args):
xL.set(xE.get())
print("顯示更動: ", xE.get())


xL = StringVar()
label = Label(root, textvariable = xL)
xL.set("同步顯示")
label.pack(pady = 5, padx = 10)

結果

追蹤模式trace()使用 r

  • 這是讀取追蹤,要按下按鈕才會出現……
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    from tkinter import *


    def callbackW(*args):
    xL.set(xE.get())

    def callbackR(*args):
    print("資料被讀取")

    def hit():
    print("讀取資料: ", xE.get())

    root = Tk()
    root.title("Python-tkinter")

    xE = StringVar()
    entry = Entry(root, textvariable = xE)
    entry.pack(pady = 5, padx = 10)
    xE.trace("w", callbackW)
    xE.trace("r", callbackR)

    xL = StringVar()
    label = Label(root, textvariable = xL)
    xL.set("同步顯示")
    label.pack(pady = 5, padx = 10)

    btn = Button(root, text = "讀取", command = hit)
    btn.pack(pady = 5)

    root.mainloop()

結果

callback方法參數

1
2
3
4
def callbackW(name, index, mode):
xL.set(xE.get())
print("name = %r, index = %r, mode = %r" % (name, index, mode))

結果