Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AttributeError:“str”对象在tkinter中没有属性“set”

AttributeError:“str”对象在tkinter中没有属性“set”
EN

Stack Overflow用户
提问于 2017-02-09 17:29:04
回答 1查看 2.8K关注 0票数 0

我正在尝试使用tkinter在Python中创建和实现一个简单的表单。表单本身是使用页面创建的,我现在正在尝试编写代码来与表单交互(我还在学习Python,所以请容忍我)。

我得到了一个AttributeError:当尝试从定义标签的类外部动态设置标签中的文本时,'str‘对象没有属性' set’。所有我在网上读到的东西都表明,这是实现我想要的结果的方法,但是我被这个错误所困扰。任何帮助都是非常感谢的。

错误发生在setTimerString函数中(它是Pulse类的一部分)。

以下是我的主要代码文件:

代码语言:javascript
运行
AI代码解释
复制
#! /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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-09 17:38:07

代码语言:javascript
运行
AI代码解释
复制
self.countString = StringVar()
self.countString = "0"

将丢弃StringVar并将其替换为常规的str,即没有set方法的那种。

相反,

代码语言:javascript
运行
AI代码解释
复制
self.countString.set("0")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42150030

复制
相关文章
java继承的调用顺序
加入了子类以后,执行顺序有了新的变化,我们可以总结一下。首先第一部分执行的是父类的静态代码块—子类的静态代码块—主程序。这一部分都是执行一次,与建立多少对象没有关系。第二部分new了一个父类对象,并调用了方法。执行了它的非静态代码块—构造函数—一般方法。第三部分new了一个子类的对象,并调用了方法。执行顺序为父类的非静态代码块—父类的无参构造函数,然后是子类的非静态代码块—子类构造函数—子类的方法。
用户7043603
2022/02/27
8250
UITableView reloadData或viewWillAppear失效
后来发现原来用了UINavigationController后,viewWillAppear方法是没有效果的,要用UINavigationControllerDelegate的– navigationController:willShowViewController:animated:方法才可以达到这个目的。
EltonZheng
2021/01/22
6090
虚函数中构造函数的调用顺序
1 /*曾经有段时间一直被构造函数中的虚函数所困扰,现在通过自己重新学习了一遍,标注一下容易忘记的知识*/ 2 #include<iostream> 3 using namespace std; 4 class Base0 5 { 6 public: 7 Base0(int var):var0(var) 8 { 9 cout<<"Construct base0"<<endl; 10 } ; 11 int var0; 12 void fun()
Gxjun
2018/03/22
3.7K0
虚函数中构造函数的调用顺序
Java构造函数调用顺序问题
今天对Java的构造函数调用顺序进行研究,使用的是与C++类似的方法,即不对源码进行研究,而是直接通过打印代码对构造函数的调用顺序进行研究。
用户7886150
2021/04/20
1.1K0
Java-构造方法调用顺序
执行结果: 开始创建一个ChildClass对象… 创建FatherClass 创建ChildClass 要点: ①关于构造方法结合继承概念的调用,有如下的顺序,函数入口总是main,先执行System.out.println(“开始创建一个ChildClass对象…”)语句;然后我们调用了ChildClass这个类的构造方法,然后由于虽然在public ChildClass{}这个构造方法内并只写了System.out.println(“创建ChildClass”);但是其第一步必定执行super();于是去执行其父类FatherClass类的构造方法,同理,FatherClass类构造方法执行的时候又得先得执行默认的Object类的构造方法,不过其没有相应的语句输出。 ②总结执行顺序:构造方法第一句总是:super(…)来调用“此类的父类”对应的构造方法。所以,流程就是:先向上追溯到Object,然后再依次向下执行类的初始化块和构造方法,直到当前子类为止。
Fisherman渔夫
2019/07/30
9360
Java构造函数调用顺序问题
今天对Java的构造函数调用顺序进行研究,使用的是与C++类似的方法,即不对源码进行研究,而是直接通过打印代码对构造函数的调用顺序进行研究。
全栈程序员站长
2022/06/28
7540
多重继承重名方法调用顺序
#coding=utf-8 class base(object): def test(self): print('----base test----') class A(base): def test(self): print('----A test----') # 定义一个父类 class B(base): def test(self): print('----B test----') # 定义一个子类,继承自A、B class
汪凡
2018/05/29
7540
JAVA & .NET创建对象构造函数调用顺序
基类静态初始化块——当前类静态初始化块——基类初始化块——基类构造函数——当前类初始化块——当前类构造函数
雪飞鸿
2019/03/08
1.1K0
react源码解析-生命周期调用顺序
函数组件hooks的周期会在hooks章节讲解,这一章的使命周期主要针对类组件,各阶段生命周期执行情况看下图:
长腿程序员165858
2022/11/10
2340
Java抽象类及子类实例化顺序和方法调用顺序测试
测试目的 验证抽象类及子类实例化顺序; 验证抽象类是否可以在子类未实例化时调用子类实现的抽象方法; 验证java的多态性 实例 抽象类: package com.secbro.test.abstractInit; /** * @author zhuzhisheng * @Description * @date on 2016/5/28. */ public abstract class Fruit { protected Fruit(){ System.out.print
程序新视界
2022/05/06
8390
关于UrlHttpConnection.setRequestProperty()的调用顺序问题的验证「建议收藏」
在Android项目中使用到了HttpURLConnection请求资源,对于其中的方法setRequestProperty()的调用顺序有些疑惑。
全栈程序员站长
2022/09/30
9310
关于UrlHttpConnection.setRequestProperty()的调用顺序问题的验证「建议收藏」
Unity3D 销毁GameObject api调用顺序
对于每个GameObject来说,实际调用顺序是OnDisable->OnBecameInvisible->OnDestroy,但是在多个GameObject直接不能保证调用顺序,可能第一个GameObject的OnDestroy已经调用了,另一个的OnDisable才开始调用。所以当多个GameObject调用一个全局变量时,要注意。例如:
立羽
2023/08/24
2430
如何保证分布式系统中接口调用的顺序性?
分布式是当下比较流行的一个话题,很多大型的互联网公司都是分布式系统,将一个大而全的系统拆分成多个小而精的一个个的功能单一、职责集中的子系统,系统之间通过约定好的协议、规则进行调用,降低系统之间的耦合度,避免牵一发而动全身。
编程大道
2020/01/16
2.3K0
如何保证分布式系统中接口调用的顺序性?
顺序表的定义_顺序表的逻辑顺序和物理顺序
来看一个生活中的例子:周末和朋友一起吃火锅,人非常多,我们需要在等候区等候,这个等候区就与顺序表有非常多的相似之处,借助它去理解顺序表的特点。首先,在等候区有非常多的椅子,这些椅子往往是排成一排连续排放的,中间不会空出很大的空间造成浪费。这就与在顺序表中选取存储单元的方法是一样的,我们会选取一段地址连续的存储单元去存放顺序表。接着工作人员会安排我们在椅子上连续的坐下等候。在存储单元当中去进行数据的存放是一样的,也是依次地存放线性表当中的数据元素,中间也不会空出许多存储单元造成空间的浪费。最后结伴而行的朋友也会坐在相邻的椅子上,这与顺序表的存放是相同的。在逻辑上相邻的两个元素在物理位置上也要保证它相邻,也会把它存放在相邻的存储单元上。在这个例子当中,其实椅子就代表着存储单元,而每一个等候的人就是要存放的数据元素。来总结一下顺序表的特点:
全栈程序员站长
2022/09/20
1.7K0
react源码解析11.生命周期调用顺序
函数组件hooks的周期会在hooks章节讲解,这一章的使命周期主要针对类组件,各阶段生命周期执行情况看下图:
用户9002110
2021/12/08
2550
react源码解析11.生命周期调用顺序
函数组件hooks的周期会在hooks章节讲解,这一章的使命周期主要针对类组件,各阶段生命周期执行情况看下图:
zz1998
2021/12/15
2090
react源码解析11.生命周期调用顺序
函数组件hooks的周期会在hooks章节讲解,这一章的使命周期主要针对类组件,各阶段生命周期执行情况看下图:
zz1998
2021/12/03
2360
react源码解析11.生命周期调用顺序
函数组件hooks的周期会在hooks章节讲解,这一章的使命周期主要针对类组件,各阶段生命周期执行情况看下图:
全栈潇晨
2021/06/11
3450
iOS 多个category同时交换同一个方法
结论: 1.结果会覆盖,后面的会覆盖前面的,最后执行的是2的方法。无论是类方法还是实例方法。后面代码会做验证。 2.每个category的+ (void)load方法是独立,都会执行,不会相互覆盖。
且行且珍惜_iOS
2021/09/07
1.5K0
点击加载更多

相似问题

调用[超级viewWillAppear] [超级viewDidLoad]等的正确顺序是什么?

10

未调用viewWillAppear

11

不调用viewWillAppear

20

未调用viewWillAppear

22

未调用ParentViewController的ViewWillAppear

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档