gpt4 book ai didi

python - 将文本输入保存到 kivy 应用程序中的变量

转载 作者:太空宇宙 更新时间:2023-11-03 14:48:48 41 4
gpt4 key购买 nike

我正在制作一个基于文本的游戏,游戏有时会要求用户输入他们的姓氏。我已经找到了一种方法将名称保存到文件中,并从文件中加载名称,但我不知道如何保存已输入到变量中的文本。我尝试过网上看到的各种方法,但到目前为止没有一个对我有用。我的相关代码部分目前如下所示:(忽略像 customwidget 这样的奇怪名称,我尝试过一次并让它们保持这样:P)

testing.py 文件:

import kivy
kivy.require("1.9.0")
from kivy.properties import NumericProperty

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty

class CustomWidget(Widget):
last_name_text_input = ObjectProperty()
ego = NumericProperty(0)
surname = ''

def submit_surname(self):
surname = self.last_name_text_input.text

class CustomWidgetApp(App):
def build(self):
return CustomWidget()

customWidget = CustomWidgetApp()
customWidget.run()

customwidget.kv 文件:

<CustomWidget>:
last_name_text_input: last_name
Label:
text: "Last Name:"
pos: 655,400
size: 100, 30
TextInput:
id: last_name
pos: 760,400
size: 100, 30
Button:
text: "Save Name"
pos: 870,400
size: 100, 30
on_release: root.submit_surname()

这将创建一个如下所示的屏幕:

但是,每当我将姓氏值保存到文件或尝试打印姓氏时,它都不会出现任何结果。如果我能得到有关此问题的一些帮助,我将不胜感激。预先感谢您的帮助:)

最佳答案

您必须将姓氏声明为 StringProperty。请引用下面的例子。

main.py

    from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty, NumericProperty, StringProperty


class CustomWidget(Widget):
last_name_text_input = ObjectProperty()
ego = NumericProperty(0)
surname = StringProperty('')

def submit_surname(self):
self.surname = self.last_name_text_input.text
print("Assign surname: {}".format(self.surname))
self.save()
self.surname = ''
print("Reset surname: {}".format(self.surname))
self.load()
print("Loaded surname: {}".format(self.surname))

def save(self):
with open("surname.txt", "w") as fobj:
fobj.write(str(self.surname))

def load(self):
with open("surname.txt") as fobj:
for surname in fobj:
self.surname = surname.rstrip()


class CustomWidgetApp(App):
def build(self):
return CustomWidget()

if __name__ == "__main__":
CustomWidgetApp().run()

自定义小部件.kv

#:kivy 1.10.0

<CustomWidget>:
last_name_text_input: last_name
Label:
text: "Last Name:"
pos: 655,400
size: 100, 30
TextInput:
id: last_name
pos: 760,400
size: 100, 30
Button:
text: "Save Name"
pos: 870,400
size: 100, 30
on_release: root.submit_surname()

输出

enter image description here

关于python - 将文本输入保存到 kivy 应用程序中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46045092/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com