Android Python,Kivy:按钮不更新文本
我正在尝试为android制作一个类似于:你愿意吗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
(斜体的所有内容都不是必需的)
最后,我总共制作了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'