我正在尝试使用tkinter在Python中创建和实现一个简单的表单。表单本身是使用页面创建的,我现在正在尝试编写代码来与表单交互(我还在学习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()
发布于 2017-02-09 17:38:07
self.countString = StringVar()
self.countString = "0"
将丢弃StringVar
并将其替换为常规的str
,即没有set
方法的那种。
相反,
self.countString.set("0")
https://stackoverflow.com/questions/42150030
复制