【问题标题】:how di i access the text input from the TextInputs that were created by the 'Add' button in kivy我如何从 kivy 中的“添加”按钮创建的 TextInputs 访问文本输入
【发布时间】:2020-10-03 12:01:02
【问题描述】:

我想保存我在 TextInputs 中输入的文本输入,这些文本输入是由我想访问它们的添加按钮创建的,所以我可以保存在一个文件中其他一些带有 id 的方法,但它也有效,我想将它们保存在一个 txt 文件中,以便我以后可以访问它们,有什么建议吗? 这是py文件

from datetime import date
from kivy.app import App
from kivy.factory import Factory
from kivy.uix.gridlayout import GridLayout
from kivy.properties import ObjectProperty


class MyGrid(GridLayout) :
    id_1 = ObjectProperty(None)
    id_2 = ObjectProperty(None)
    id_3 = ObjectProperty(None)
    id_4 = ObjectProperty(None)
    id_5 = ObjectProperty(None)
    id_6 = ObjectProperty(None)
    id_7 = ObjectProperty(None)
    id_10 = ObjectProperty(None)


    def perfundo (self) :
        file = open('F:\\F\\F\\' + self.id_1.text + '-' + str(date.today()) + '.txt', 'x')
        file.write('Emri dhe mbiemri :' + self.id_1.text + '\n' + 'Lloji i vetures :' + self.id_2.text + '\n' + 'Nr. i telefonit :' + self.id_3.text + '\n' + 'Problemi :' + self.id_4.text+ '\n' + 'idk :' + self.id_5.text+self.id_6.text+self.id_7.text)
        file.close()

    def add(self):
        self.ids.parts_text_inputs.add_widget(Factory.PartsTextInputs())

class HAZApp(App) :
    def build (self) :
        return MyGrid()


app = HAZApp()
app.run()

这是kv文件

<PartsTextInputs@BoxLayout>:  # this is a rule for building the parts TextInputs
size_hint_y: None
height: self.minimum_height
spacing: 20
TextInput:
    size_hint_y: None
    height: 48
    id:txtinp1
BoxLayout:
    size_hint_y: None
    height: self.minimum_height
    TextInput:
        size_hint_y: None
        height: 48
        id:txtinp2
    TextInput:
        size_hint_y: None
        height: 48
        id:txtinp3
<MyGrid>
    id: HAZ
    id_1: emridhembiemri
    id_2:llojiivetures
    id_3:numriitelefonit
    id_4:problemi
    id_5:txtinp1
    id_6:txtinp2
    id_7:txtinp3
    id_10:add
    # rows: 10
    cols: 1
    padding: 10
    spacing: 10
    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
            source: 'photo.jpg'

BoxLayout:
    canvas.before:
        Color:
            rgba: 0.4,0.5,0.8,1
        Rectangle:
            size: self.size
            pos: self.pos
    Label:
        font_size: '40sp'
        outline_color: 0, 0, 0
        outline_width: 2
        text: 'Auto Servis "Haziri"'

BoxLayout:
    spacing:10
    Label:
        text:"Name"
        font_size: 20
        color:0.4,0.5,0.8,1
    Label:
        text:"Type of car"
        font_size: 20
        color:0.4,0.5,0.8,1
    Label:
        text:"Phone number"
        font_size: 20
        color:0.4,0.5,0.8,1
    Label:
        text:"Problem"
        font_size: 20
        color:0.4,0.5,0.8,1

BoxLayout:
    spacing:20
    TextInput:
        font_size: 20
        id:emridhembiemri
    TextInput:
        font_size: 20
        id:llojiivetures
    TextInput:
        font_size: 20
        id:numriitelefonit
    TextInput:
        font_size: 20
        id:problemi

BoxLayout:
    spacing: 20
    column:2
    Label:
        text:'Parts'
        font_size: 20
        color:0.4,0.5,0.8,1
    BoxLayout:
        Label:
            text:'price for parts'
            font_size: 20
            color:0.4,0.5,0.8,1
        Label:
            text:'price for work'
            font_size: 20
            color:0.4,0.5,0.8,1

ScrollView:
    size_hint_y: 3  # Since this is part of a GridLayout space is assigned by size_hint ratios

    BoxLayout:
        id: parts_text_inputs  # this will contain all the parts TextInputs
        orientation: 'vertical'
        size_hint_y: None
        height: self.minimum_height

        PartsTextInputs:# this is the first of the parts TextInputs


BoxLayout:
    Button:
        id:add
        text:'Add'
        on_press:root.add()

BoxLayout:
    column:4
    Label:
        text:''
    Label:
        text:''
    Label:
        text:''
    Label:
        text:'Total'


BoxLayout:
    column:4
    Label:
        text:''
    Label:
        text:''
    Label:
        text:''
    Button:
        text:'total'

BoxLayout:
    Label:
        text:''
    Button:
        text:'Finish'
        font_size: 20
        on_press:root.perfundo()
        on_press: app.stop()
    Label:
        text:''

【问题讨论】:

    标签: python button kivy kivy-language textinput


    【解决方案1】:

    您需要保存对它们的引用以供以后访问。例如,textinputs = ListProperty() 在班级级别,然后是t = YourTextInput(); self.textinputs.append(t); something.add_widget(t),然后您可以通过self.textinputs 在其他地方访问该列表。

    【讨论】:

    • 你能再解释一下吗,因为我还是不明白
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多