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