2017-02-10 19 views
0

tkinterを使用してPythonで簡単なフォームを作成して実装しようとしています。フォーム自体はPAGEを使用して作成されました。フォームとやりとりするためのコードを記述しようとしています(私はまだPythonを学んでいますので、私に負担してください)。AttributeError:tkinterに 'str'オブジェクトの属性が設定されていません

私はAttributeErrorを取得しています:ラベルが定義されているクラスの外からラベル内のテキストを動的に設定しようとすると、 'str'オブジェクトに属性がありません。私がオンラインで読んだことは、これが私の望む結果を達成する方法であることを示しています。しかし、私はこのエラーによって困惑しています。どんな助けもありがとうございます。

エラーは、(パルスクラスの一部である)setTimerString関数で発生しています。

#! /usr/bin/env python 
# 
# GUI module generated by PAGE version 4.8.5 
# In conjunction with Tcl version 8.6 
# Feb 10, 2017 09:38:24 AM 
import sys 

try: 
    from Tkinter import * 
except ImportError: 
    from tkinter import * 

try: 
    import ttk 
    py3 = 0 
except ImportError: 
    import tkinter.ttk as ttk 
    py3 = 1 

import pulse_support 

def vp_start_gui(): 
    '''Starting point when module is the main routine.''' 
    global val, w, root, top 
    root = Tk() 
    top = Pulse (root) 
    pulse_support.init(root, top) 
    root.mainloop() 

w = None 
def create_Pulse(root, *args, **kwargs): 
    '''Starting point when module is imported by another program.''' 
    global w, w_win, rt 
    rt = root 
    w = Toplevel (root) 
    top = Pulse (w) 
    pulse_support.init(w, top, *args, **kwargs) 
    return (w, top) 

def destroy_Pulse(): 
    global w 
    w.destroy() 
    w = None 

def startTimer(): 
    global count 
    count = 0 # Reset it evert time the user starts the program 
    top.setTimerString("12") 


def runProgram(): 
    # Run the main program 
    startTimer() 

def closeProgram(): 
    exit() 


class Pulse: 
    def __init__(self, top=None): 
     '''This class configures and populates the toplevel window. 
      top is the toplevel containing window.''' 

     self._bgcolor = '#d9d9d9' # X11 color: 'gray85' 
     self._fgcolor = '#000000' # X11 color: 'black' 
     self._compcolor = '#d9d9d9' # X11 color: 'gray85' 
     self._ana1color = '#d9d9d9' # X11 color: 'gray85' 
     self._ana2color = '#d9d9d9' # X11 color: 'gray85' 

     top.geometry("320x344+599+249") 
     top.title("Pulse") 
     top.configure(background="#d9d9d9") 

     # Set the strings to use for the form 
     self.countString = StringVar() 
     self.timerString = StringVar() 
     self.countString = "0" 
     self.timerString = "0" 

     self.btnExit = Button(top) 
     self.btnExit.place(relx=0.84, rely=0.03, height=24, width=39) 
     self.btnExit.configure(activebackground="#d9d9d9") 
     self.btnExit.configure(activeforeground="#000000") 
     self.btnExit.configure(background="#d9d9d9") 
     self.btnExit.configure(command=closeProgram) 
     self.btnExit.configure(disabledforeground="#a3a3a3") 
     self.btnExit.configure(foreground="#000000") 
     self.btnExit.configure(highlightbackground="#d9d9d9") 
     self.btnExit.configure(highlightcolor="black") 
     self.btnExit.configure(pady="0") 
     self.btnExit.configure(text='''Exit''') 
     self.btnExit.configure(width=39) 

     self.btnStart = Button(top) 
     self.btnStart.place(relx=0.31, rely=0.17, height=104, width=125) 
     self.btnStart.configure(activebackground="#d9d9d9") 
     self.btnStart.configure(activeforeground="#000000") 
     self.btnStart.configure(background="#d9d9d9") 
     self.btnStart.configure(command=runProgram) 
     self.btnStart.configure(disabledforeground="#a3a3a3") 
     self.btnStart.configure(foreground="#000000") 
     self.btnStart.configure(highlightbackground="#d9d9d9") 
     self.btnStart.configure(highlightcolor="black") 
     self.btnStart.configure(pady="0") 
     self.btnStart.configure(text='''Start''') 
     self.btnStart.configure(width=125) 

     self.Label1 = Label(top) 
     self.Label1.place(relx=0.31, rely=0.58, height=21, width=54) 
     self.Label1.configure(background="#d9d9d9") 
     self.Label1.configure(disabledforeground="#a3a3a3") 
     self.Label1.configure(foreground="#000000") 
     self.Label1.configure(text='''Timer:''') 
     self.Label1.configure(width=54) 

     self.lblTimer = Label(top) 
     self.lblTimer.place(relx=0.5, rely=0.58, height=21, width=32) 
     self.lblTimer.configure(background="#a8aeff") 
     self.lblTimer.configure(disabledforeground="#a3a3a3") 
     self.lblTimer.configure(foreground="#000000") 
     self.lblTimer.configure(textvariable=self.countString) 
     self.lblTimer.configure(width=32) 

     self.Label3 = Label(top) 
     self.Label3.place(relx=0.33, rely=0.67, height=21, width=43) 
     self.Label3.configure(background="#d9d9d9") 
     self.Label3.configure(disabledforeground="#a3a3a3") 
     self.Label3.configure(foreground="#000000") 
     self.Label3.configure(text='''Count:''') 

     self.lblCount = Label(top) 
     self.lblCount.place(relx=0.5, rely=0.67, height=21, width=32) 
     self.lblCount.configure(activebackground="#f9f9f9") 
     self.lblCount.configure(activeforeground="black") 
     self.lblCount.configure(background="#ffa8a8") 
     self.lblCount.configure(disabledforeground="#a3a3a3") 
     self.lblCount.configure(foreground="#000000") 
     self.lblCount.configure(highlightbackground="#d9d9d9") 
     self.lblCount.configure(highlightcolor="black") 
     self.lblCount.configure(textvariable=self.countString) 

     self.Label4 = Label(top) 
     self.Label4.place(relx=0.13, rely=0.84, height=36, width=237) 
     self.Label4.configure(background="#d9d9d9") 
     self.Label4.configure(disabledforeground="#a3a3a3") 
     self.Label4.configure(foreground="#000000") 
     self.Label4.configure(text='''Press the start button to start the program. 
Every time your pulse beats, press the P key.''') 

    def setTimerString(self, newVal): 
     self.timerString.set(newVal) 


if __name__ == '__main__': 
    vp_start_gui() 
+2

密接にエラーを読んで、それが言っていることへの信頼。通常の文字列に 'set'メソッドがないことを伝えています。それは本当の声明です。だから、あなたが呼びたいメソッドについて間違っているか、変数があなたが思うものではありません。 –

答えて

1
self.countString = StringVar() 
self.countString = "0" 

StringVarを捨てて、定期的strと交換しますが、何のset方法を持っていない、すなわち種類:

はここに私のメインのコードファイルです。

代わり

self.countString.set("0") 
+0

偉大な応答、そのおかげで。今私はそれを見て簡単です。 –

関連する問題