2017-05-14 12 views
-1

私はいろいろなことを試みましたが、今まで何も働いていませんでした。ラベルをPythonで数値で更新するにはどうすればよいですか?

"+1"(b1)または "-1"(b2)ボタンを押すたびに、ラベル(l1)の増減を1回試行しています。しかし、現時点ではレーベルはそこに座って何もしません。ここで

はそれのコードはラベルを更新しようとせずに、基本的なフォームのである。

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ずつ増やし、それを減らす2つの関数を定義します。その後、ボタンのcommandオプションに関数を渡すとラベルのtextvariable引数にIntVarを渡す:

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

関連する問題