2017-05-14 1 views
-1

나는 많은 것들을 시도했지만 지금까지 아무 일도하지 않았다.레이블을 파이썬으로 숫자 값으로 업데이트하려면 어떻게해야합니까?

"+1"(b1) 또는 "-1"(b2) 버튼을 누를 때마다 Label (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 씩 증가시키고 다른 하나는 감소시키는 두 가지 기능을 정의하십시오. 그런 다음, 라벨의하면 textVariable 인수에 IntVar을 버튼의 command 옵션 기능을 전달하고 전달합니다 : 그것은 작동

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

관련 문제