2017-05-14 19 views
-1

我已經嘗試了很多不同的東西,但沒有任何工作到目前爲止。如何使用python更新帶有數值的標籤?

我想每次按下「+1」(b1)或「-1」(b2)按鈕時標籤(l1)增加或減少一個。但目前標籤只是坐在那裏,什麼都不做。

這裏是它的代碼是基本形式,但不嘗試更新標籤:

from tkinter import * 
root = Tk() 

p1 = 0 

l1 = Label(root, textvariable = p1) 
f1 = Frame(root) 
b1 = Button(root, text = "+1", command = p1 + 1) 
b2 = Button(root, text = "-1", command = p1 - 1) 

l1.grid(row=0, column=0) 
f1.grid(row=1, column=0) 

b1.pack(side="top") 
b2.pack(side="top") 

root.mainloop() 

回答

1

有幾個問題在你的代碼:

  • 一個Buttoncommand選擇需要的功能和p1 +/- 1不是一個函數。
  • Labeltextvariable選項需要Tkinter變量,通常爲StringVar,但此處IntVar更合適。
  • 你在混合packgridroot,這是不可能的。

要做你想做的事情,你需要定義兩個函數,一個是將IntVar的值增加1,另一個是減小它的值。然後,通過功能按鈕的command選項,並通過IntVar到標籤的textvariable說法:

import tkinter as tk 

def increase(): 
    p1.set(p1.get() + 1) 

def decrease(): 
    p1.set(p1.get() - 1) 

root = tk.Tk() 

p1 = tk.IntVar(root, 0) 

l1 = tk.Label(root, textvariable=p1) 

b1 = tk.Button(root, text="+1", command=increase) 
b2 = tk.Button(root, text="-1", command=decrease) 

l1.pack() 
b1.pack() 
b2.pack() 

root.mainloop() 
+0

它的工作原理!我想我只是沒有正確地分配IntVar。 – Fenjalien

相關問題