2017-02-26 2 views
-1

내 코드의 목적은 숫자가 변경되면 텍스트를 텍스트 상자에 삽입하는 슬라이더를 사용하는 것입니다. 그러나, 나는 "AttributeError : Label 인스턴스에 속성 'insert'"오류가없는 것을 발견 할 수 없습니다.AttributeError : Label 인스턴스에 'insert'속성이 없습니다.

# -*- coding: utf-8 -*- 
import Tkinter 
from Tkinter import * 
root = Tkinter.Tk() #The root/base 

def math(): #This is the command that does the math 
    text.insert(Tkinter.END, base +height + radius) 
    text.see(Tkinter.END) 

text = Text(root, width=10, height=20, background='#FFFFFF') 
text.grid(row=0, rowspan=2, column=2) 

text = Tkinter.Label(root, text='Change slider\nTo Desired\nValue') 
text.grid(row=0, column=1) 
#### 
#Variables 
#### 
base = Tkinter.IntVar() 
base.set(0) 
height = Tkinter.IntVar() 
height.set(0) 
radius = Tkinter.IntVar() 
radius.set(0) 
#### 
#Sliders 
#### 

base_slider = Tkinter.Scale(root, from_=0, to=500, variable=base, 
         orient=Tkinter.HORIZONTAL, 
         label='Base', command=math) 
base_slider.grid(row=1, column=1) 

height_slider = Tkinter.Scale(root, from_=0, to=500, variable=height, 
         orient=Tkinter.HORIZONTAL, 
         label='Height', command=math) 
height_slider.grid(row=2, column=1) 

radius_slider = Tkinter.Scale(root, from_=0, to=500, variable=radius, 
         orient=Tkinter.HORIZONTAL, 
         label='Radius', command=math) 
radius_slider.grid(row=3, column=1) 

root.mainloop() 

도움 주셔서 감사합니다.

+0

두 개의 동일한 명명 된 변수가 있습니다. 두 번째 것은 첫 번째를 덮어 쓰고 손실됩니다. 해당 이름을 다른 이름으로 지정하고 적용 가능한 경우 해당 이름을 사용하도록 코드를 수정해야합니다. 또한 'text.insert (Tkinter.END, base + height + radius)'=>'text.insert (Tkinter.END, base.get() + height.get() + radius.get())' –

+0

폴 감사합니다. ,하지만 이제는 위의 문제를 해결했습니다. "TypeError : math()는 인수가 없습니다 (주어진 1 개)" – Henry

+0

'math'에게 하나의 매개 변수를 지정합니다. 당신이 좋아하는 것을 불러라, 당신은 그것을 사용하지 않고있다. Tkinter는 하나의 인자를 가지고 그것을 호출하기 때문에 그것을 무시하더라도 하나의 인자가 필요합니다. 또한 '텍스트'의 인스턴스화 아래에서 '수학을 이동하십시오. –

답변

1

동일한 이름을 가진 두 개의 변수가 있습니다.

LabelText 위젯 모두 text이라고합니다. 라벨은 할당 할 두 번째 객체이므로 그 이후부터 변수 text과 연결됩니다.

당신은 Text 위젯에 삽입했다고 생각하지만 그 방법이 부족한 Label입니다.

위젯에 다른 이름을 붙이면 고칠 수 있습니다.

코드를 수정하면 질문에 대한 의견이 더 많은 정보를 제공합니다.

# -*- coding: utf-8 -*- 
import Tkinter 
from Tkinter import * 
root = Tkinter.Tk() #The root/base 

text = Text(root, width=10, height=20, background='#FFFFFF') 
text.grid(row=0, rowspan=2, column=2) 

label = Tkinter.Label(root, text='Change slider\nTo Desired\nValue') 
label.grid(row=0, column=1) 

def math(arg): #This is the command that does the math 
    text.insert(Tkinter.END, base.get() +height.get() + radius.get()) 
    text.see(Tkinter.END) 

#### 
#Variables 
#### 
base = Tkinter.IntVar() 
base.set(0) 
height = Tkinter.IntVar() 
height.set(0) 
radius = Tkinter.IntVar() 
radius.set(0) 
#### 
#Sliders 
#### 

base_slider = Tkinter.Scale(root, from_=0, to=500, variable=base, 
         orient=Tkinter.HORIZONTAL, 
         label='Base', command=math) 
base_slider.grid(row=1, column=1) 

height_slider = Tkinter.Scale(root, from_=0, to=500, variable=height, 
         orient=Tkinter.HORIZONTAL, 
         label='Height', command=math) 
height_slider.grid(row=2, column=1) 

radius_slider = Tkinter.Scale(root, from_=0, to=500, variable=radius, 
         orient=Tkinter.HORIZONTAL, 
         label='Radius', command=math) 
radius_slider.grid(row=3, column=1) 

root.mainloop() 
관련 문제