2015-11-26 87 views
1

我想做一個Button,每次點擊後改變顯示的文本(數字)並返回在函數中定義的valure,因爲我想使用顯示的變量。python button點擊後改變文字

我創建了一個函數,在每次點擊後爲「文本」添加+1,直到4 和一個按鈕。該代碼不返回功能的valure和按鈕只有文字= 1,2,3或4

import tkinter as tk 

root = tk.Tk() 

text = 0 
def text_change(): 
    global text 
    text += 1 

    print(text) 
    if text >= 4: 
     text = 0 

#to change: button text has to be the variable defined in the function 
btn = tk.Button(text = "1,2,3 or 4", width = 10, height = 3, command = \ 
       text_change).grid(row = 1 , column = 1) 

root.mainloop() 

我希望你能幫助我:)

+1

點擊的按鈕不能返回值更改按鈕文本。 – furas

+0

btw:'btn = tk.Button(...)。grid(..)'總是將'None'分配給'btn'。使用'btn = tk.Button(...); btn.grid(...)' – furas

回答

1

首先

btn = tk.Button(...).grid(..) 

分配Nonebtn因爲grid()回報None

使用

現在
btn = tk.Button(...) 
btn.grid(...) 

您可以使用btn['text'] = "new text"btn.config(text="new text")

import tkinter as tk 

# --- functions --- 

def text_change(): 
    global text 

    text += 1 

    if text > 4: 
     text = 1 

    print("changed to:", text) 

    #btn['text'] = text 
    btn.config(text=text) 

def text_print(): 
    print("current:", text) 

# --- main --- 

text = 0 

root = tk.Tk() 

btn = tk.Button(text="1,2,3 or 4", command=text_change, width=10, height=3) 
btn.grid(row=1, column=1) 

btn2 = tk.Button(text="SHOW", command=text_print, width=10, height=3) 
btn2.grid(row=2, column=1) 

root.mainloop() 
+0

謝謝!你知道如何將1,2,3或4分配給一個變量嗎?所以我可以使用變量 –

+0

我不知道你的意思。你已經有了'text'變量,你可以使用它。 – furas

+0

是的,但我認爲text_change()中的文本值是本地的,所以文本= 0 ist總是0.我想用text_change()的文本值 –