Android Python,Kivy:按钮不更新文本

Android Python,Kivy:按钮不更新文本,android,python,python-3.x,kivy,Android,Python,Python 3.x,Kivy,我正在尝试为android制作一个类似于:你愿意吗 (斜体的所有内容都不是必需的) 最后,我总共制作了4个应用程序(技术上是重复的),其中kivy代码有所不同。 最初的问题是按钮的选项要么不触发功能,要么纹理消失,所有这些都已修复 我现在的问题是,按钮按下后没有更新。输出文件被更新,因此函数被调用并执行。 但是,按钮本身上的文本在按下按钮后不会更新。 代码如下: #Imports import kivy kivy.require('1.9.0') from kivy.app import Ap

我正在尝试为android制作一个类似于:你愿意吗
(斜体的所有内容都不是必需的)
最后,我总共制作了4个应用程序(技术上是重复的),其中kivy代码有所不同。
最初的问题是按钮的选项要么不触发功能,要么纹理消失,所有这些都已修复

我现在的问题是,按钮按下后没有更新。输出文件被更新,因此函数被调用并执行。 但是,按钮本身上的文本在按下按钮后不会更新。
代码如下:

#Imports
import kivy
kivy.require('1.9.0')

from kivy.app import App
from kivy.clock import Clock
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
from os import system as Sys




#Variables
QuestionsDict = {0:["Te faire couper une jambe","Te faire couper un bras"],1:["Lire les penses d'une personne, une fois par jour","Voir jusqu'à un jour dans le futur pendant maximum 1 heure"]}




#Complex variables
try:
    PlayerData = eval(open("TPLocal.dat","r").read()) #PlayerData is a base 3 number 0 = not answered question, 1 = chose option 1, 2 = chose option 2
except:
    PlayerData = str() # if file id not present (1st time opening app)
finally:
    PlayerData = list(str(PlayerData)) #for editing purposes

if len(PlayerData) < len(QuestionsDict):
    PlayerData += "0" * (len(QuestionsDict) - len(PlayerData)) #in case questions have been added to app since last open




#Functions
def b58encode(): #smaller text to send to us for statistical analysis (App is for a e-con student)
    number = int("".join(PlayerData),3)
    alphabet='0123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnoqrstuvwxyz'
    base36 = str()

    while not number == 0:
        number, i = divmod(number, 58)
        base36 = alphabet[i] + base36

    return base58




#Classes
class TPGame(BoxLayout): 

    Question1 = StringProperty(QuestionsDict[PlayerData.index("0")][0])
    Question2 = StringProperty(QuestionsDict[PlayerData.index("0")][1])


    def Q1(self):
        PlayerData[PlayerData.index("0")] = "1"
        open("TPLocal.dat","w").write(str("".join(PlayerData)))

    def Q2(self):
        PlayerData[PlayerData.index("0")] = "2"
        open("TPLocal.dat","w").write(str("".join(PlayerData)))

    def copytoclipboard(self):
        Sys('echo|set /p=' + b58encode(PlayerData) + '|clip')


class TuPreferesApp(App):
    def build(self):
        return TPGame()




#Core
if __name__ in ('__main__','__android__'):
    TuPreferesApp().run()
#导入
进口克维
kivy.require('1.9.0')
从kivy.app导入应用程序
从kivy.clock导入时钟
从kivy.uix.widget导入widget
从kivy.uix.boxlayout导入boxlayout
从kivy.properties导入StringProperty
从操作系统导入系统为Sys
#变数
提问席= { 0:[特拉菲尔-库珀-尤杰贝],“特蕾莎-库珀-联合布拉斯”],1([ LILE LeS PunsDune Punn,une Fo.Par Jur'”,“Voir jusqu 'unun-dul-Lut-Futur-Langand最大1 Hee])}
#复变量
尝试:
PlayerData=eval(open(“TPLocal.dat”,“r”).read())#PlayerData是一个基数3数字0=未回答问题,1=选择选项1,2=选择选项2
除:
PlayerData=str()#如果文件id不存在(第一次打开应用程序)
最后:
PlayerData=列表(str(PlayerData))#用于编辑目的
如果len(玩家数据)
.kv文件:

#:kivy 1.9.0

<TPGame>:
    orientation: "vertical"
    Label:
        text: u"Tu pr\u00E9f\u00E8res?"
        text_size: self.size
        halign: "center"
        valign: "middle"

    Button:
        background_normal: "Op1.png"
        background_down: "Op1D.png"
        text: root.Question1
        text_size: self.size
        halign: "center"
        valign: "middle"
        on_press: root.Q1()

    Button:
        id: B2
        background_normal: "Op2.png"
        background_down: "Op2D.png"
        text: root.Question2
        text_size: self.size
        halign: "center"
        valign: "middle"
        on_press: root.Q2()

    Button:
        background_normal: "Black.png"
        background_down: "Black.png"
        text: "Si vous voulez nous envoyer vos reponses\n Appuyez ici"  #translates to "if you want to sent us your answers press here"
        text_size: self.size
        halign: "center"
        valign: "bottom"
        on_press: root.copytoclipboard()
#:kivy 1.9.0
:
方向:“垂直”
标签:
文本:u“Tu pr\u00E9f\u00E8res?”
文本大小:self.size
哈利恩:“中心”
valign:“中间”
按钮:
背景_正常:“Op1.png”
背景:“Op1D.png”
文本:root.1
文本大小:self.size
哈利恩:“中心”
valign:“中间”
on_press:root.Q1()
按钮:
id:B2
背景正常:“Op2.png”
背景:“Op2D.png”
文本:root.2
文本大小:self.size
哈利恩:“中心”
valign:“中间”
on_press:root.Q2()
按钮:
背景_正常:“Black.png”
背景:“Black.png”
文字:“Si vous voulez nous特使vos Responses\n Appuyez ici”翻译为“如果您想向我们发送您的答案,请按此处”
文本大小:self.size
哈利恩:“中心”
valign:“底部”
按:root.copytoclipboard()
我无法在每次按下按钮时更改按钮上的文本。我试过时钟和塞特,但没有成功。
我想做的是更新前两个按钮上的文本,以显示下两个选项。(后面的问题图片中会有更多问题,数量不限)
抱歉,应用程序中的文本是法语(我是法语)
提前感谢

Steph

也许你应该将你的按钮绑定到某个更新文本的功能上? 像

或在.kv文件中:

button:
on_release: root.something
当然,你也可以在按下按钮时使用,但这会切断按下按钮的奇特动画

编辑: 好吧,我错了,现在我有一个问题:

def b58encode(*args): #smaller text to send to us for statistical analysis (App is for a e-con student)
number = int("".join(PlayerData),3)
alphabet='0123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnoqrstuvwxyz'
base36 = str()

while not number == 0:
    number, i = divmod(number, 58)
    base36 = alphabet[i] + base36
return base58
base58在哪里?当我使用剪贴板时,我有一个错误,也许我应该是base36

好吧,也许这个: 奇维锉刀

<TPGame>:
orientation: "vertical"
button2: B2
<TPGame>:
orientation: "vertical"
button2: B2
class TPGame(BoxLayout):

Question1 = StringProperty(QuestionsDict[PlayerData.index("0")][0])
Question2 = StringProperty(QuestionsDict[PlayerData.index("0")][1])
button2 = ObjectProperty()
...
def Q2(self):
    PlayerData[PlayerData.index("0")] = "2"
    open("TPLocal.dat","w").write(str("".join(PlayerData)))
    self.button2.text = 'PRESSED'