Python 根据输入将值设置为变量,StringProperty kivy

Python 根据输入将值设置为变量,StringProperty kivy,python,python-3.x,kivy,Python,Python 3.x,Kivy,当我尝试根据输入更新值时,Kivy StringProperty变量有问题 让它简单一点,这样我也能理解(我对这个有点陌生) 我怎样才能让它工作呢 我试过了 TextTime1 = StringProperty() TextTime2 = StringProperty() TextTimes = [TextTime1, TextTime2] x = 2 TextTimes[x-1] = "TEST" 不起作用。 唯一有效的方法是: TextTime1 = StringProperty() T

当我尝试根据输入更新值时,Kivy StringProperty变量有问题

让它简单一点,这样我也能理解(我对这个有点陌生)

我怎样才能让它工作呢

我试过了

TextTime1 = StringProperty()
TextTime2 = StringProperty()
TextTimes = [TextTime1, TextTime2]
x = 2

TextTimes[x-1] = "TEST"
不起作用。 唯一有效的方法是:

TextTime1 = StringProperty()
TextTime2 = StringProperty()

TextTime2 = "TEST"

如何获得更“动态”的工作方式?

据我所知,您试图替换列表中的最后一个值

你可以让它像这样工作

TextTime1=StringProperty()
TextTime2=StringProperty()
TextTimes=[TextTime1,TextTime2]
TextTimes.pop()
TextTimes.append(“测试”)

据我所知,您试图替换列表中的最后一个值

你可以让它像这样工作

TextTime1=StringProperty()
TextTime2=StringProperty()
TextTimes=[TextTime1,TextTime2]
TextTimes.pop()
TextTimes.append(“测试”)

我认为你对变量的理解有点肤浅。例如,TextTimes+x=“TEST”无效,因为您不是说TextTimes2=“TEST”,而是说TextTimes+2=“TEST”

你的第二种方法并不是完全错误的

TextTimes[x-1] = "TEST"
# = TextTimes[1] = "TEST"
# = TextTimes2 = "TEST" since TextTimes2 is the assigned index for that variable
# in your TextTimes list.
# However the correct list should be
TextTimes = [self.TextTimes1,self.TextTimes2] # if they are properties of an object
例如:

class MyWidget(Widget):
    TextTimes1 = StringProperty()
    TextTimes2 = StringProperty()
    #TextTimes = [self.TextTimes1,self.TextTimes2]
    def __init__(self,**kwargs):
        super(MyWidget,self).__init__(**kwargs)

        self.TextTimes = [self.TextTimes1,self.TextTimes2]


    def some_function(self):
        x = 2
        self.TextTimes[x-1]="TEST" #This should change the value for TextTimes2 to "TEST"

我认为你对变量的理解有点肤浅。例如,TextTimes+x=“TEST”无效,因为您不是说TextTimes2=“TEST”,而是说TextTimes+2=“TEST”

你的第二种方法并不是完全错误的

TextTimes[x-1] = "TEST"
# = TextTimes[1] = "TEST"
# = TextTimes2 = "TEST" since TextTimes2 is the assigned index for that variable
# in your TextTimes list.
# However the correct list should be
TextTimes = [self.TextTimes1,self.TextTimes2] # if they are properties of an object
例如:

class MyWidget(Widget):
    TextTimes1 = StringProperty()
    TextTimes2 = StringProperty()
    #TextTimes = [self.TextTimes1,self.TextTimes2]
    def __init__(self,**kwargs):
        super(MyWidget,self).__init__(**kwargs)

        self.TextTimes = [self.TextTimes1,self.TextTimes2]


    def some_function(self):
        x = 2
        self.TextTimes[x-1]="TEST" #This should change the value for TextTimes2 to "TEST"

只有这样,我才能看到我有限的知识,这方面的工作将是

if x == 2:
    TextTime2 = "TEST"

如果我有超过50个这样的代码,那感觉就错了,而且代码太多了…

用我有限的知识来看这项工作的唯一方法是

if x == 2:
    TextTime2 = "TEST"


如果我有超过50个的话,那感觉是错误的,而且有很多代码…

好的,我会再试一次。不,我不能让它像那样工作。唯一有效的方法是直接将字符串设置为变量,例如self.TextTime2=“TEST”你说得对。我发现我的逻辑有问题,因为当我做self.texttimes[I]时,我只是引用属性的值。我想知道你需要这样的东西做什么。到目前为止,我还没有发现我的桌面开发都必须使用它。好的,我会再试一次。不,不能让它像那样工作。唯一有效的方法是直接将字符串设置为变量,例如self.TextTime2=“TEST”你说得对。我发现我的逻辑有问题,因为当我做self.texttimes[I]时,我只是引用属性的值。我想知道你需要这样的东西做什么。到目前为止,我还没有发现我的桌面开发都必须使用它。不,我想为列表中的变量添加值。示例:TextTime1=“TEST”。那么为什么不更改变量的值呢。不管它是否是列表的一部分是的,这就是我想做的。但如果我有50个这样的文本时间,连接到不同的输入。我需要一些代码来处理这个问题。我做不到:如果x==2:TextTime2=“TEST”…你告诉我这个列表不起作用。到底是什么不起作用?也许您忘记了将输入与列表中的变量连接起来,而不是第一个变量?为什么不尝试使用字典呢
TextTimes={“TextTimes1”:“TEST1”,“TextTimes2”:“TEST2”}
No,我想给列表中的变量添加值。示例:TextTime1=“TEST”。那么为什么不更改变量的值呢。不管它是否是列表的一部分是的,这就是我想做的。但如果我有50个这样的文本时间,连接到不同的输入。我需要一些代码来处理这个问题。我做不到:如果x==2:TextTime2=“TEST”…你告诉我这个列表不起作用。到底是什么不起作用?也许您忘记了将输入与列表中的变量连接起来,而不是第一个变量?为什么不尝试使用字典呢
TextTimes={“TextTimes1”:“TEST1”,“TextTimes2”:“TEST2”}
您不需要调用“set()”来设置新值吗?也许您需要:TextTimes[x-1]。设置(“测试”)Nop,即使这样现在也可以了。在TextTimes:x=“TEST”中尝试了一个for x,它将列表项设置为TEST i beleve。如果我做了x.set(“TEST”),它什么也没做。你不需要调用“set()”来设置一个新值吗?也许您需要:TextTimes[x-1]。设置(“测试”)Nop,即使这样现在也可以了。在TextTimes:x=“TEST”中尝试了一个for x,它将列表项设置为TEST i beleve。如果我做了x.set(“测试”),它什么也没做。