tkinter를 사용하여 Python에서 간단한 양식을 만들고 구현하려고합니다. 양식 자체는 PAGE를 사용하여 작성되었으므로 이제 양식과 상호 작용하는 코드를 작성하려고합니다 (아직 Python을 배우는 중이므로 참아주세요).
레이블이 정의 된 클래스 외부에서 레이블의 텍스트를 동적으로 설정하려고 할 때 AttributeError : 'str'개체에 'set'속성이 없습니다. 내가 온라인에서 읽은 모든 것은 이것이 내가 원하는 결과를 얻는 방법임을 나타내지 만이 오류로 인해 난처합니다. 도움을 주시면 감사하겠습니다.
setTimerString 함수 (Pulse 클래스의 일부)에서 오류가 발생합니다.
다음은 내 주요 코드 파일입니다.
#! /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()
self.countString = StringVar()
self.countString = "0"
를 버리고 StringVar
일반 str
, 즉 set
방법 이없는 종류로 교체합니다 .
대신
self.countString.set("0")
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다