如何自动将所有值从一个小部件中的一个值转移到Kivy中的另一个值?

时间:2018-09-06 15:12:44

标签: python kivy kivy-language

我目前正在使用Kivy开发一个应用程序,该应用程序在单击第二个选项卡(id:secondtab)时应添加一个新的选项卡。通过addtab(self)方法已成功完成此操作,但是新选项卡的外观应与第二个选项卡完全相同。由于所有内容均写入kv文件中,因此该方法应从kv文件中获取值。不幸的是,由于我还不喜欢奇异果,所以我不知道该如何实现。我用self.ids尝试过,但是如何选择所有值?

最终,我该如何继承/覆盖第二个至第三个标签中的所有值和布局?

Python文件:

from kivy.app import App
from kivy.uix.stacklayout import StackLayout
from kivy.uix.scrollview import ScrollView
from kivy.properties import DictProperty
from kivy.core.window import Window
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.tabbedpanel import TabbedPanelItem

class kvfile(TabbedPanel):

    def addtab(self):
        self.add_widget(TabbedPanelItem())

class AddTabApp(App):

    def build(self):
        return kvfile()

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

kv文件:

<kvfile>:
    do_default_tab: False
    TabbedPanelItem:
        text: 'General Infos'
        text_size: self.width, self.height
        ScrollView:
            StackLayout:
                size_hint_y: None
                height: self.minimum_height
                orientation: 'lr-tb'
                padding: [10, 10, 10, 10]
                spacing: [10, 10]
                Label:
                    height: 80
                    size_hint: [1, None]
                    text: 'General entries'

    TabbedPanelItem:
        id: secondtab
        text: 'Code: ' + text1.text
        text_size: self.width, self.height
        on_press: 
            root.addtab()
        ScrollView:
            StackLayout:
                size_hint_y: None
                height: self.minimum_height
                orientation: 'lr-tb'
                padding: [10, 10, 10, 10]
                spacing: [10, 10]
                BoxLayout:
                    height: 60
                    size_hint: [1, None]
                    spacing: 10
                    Label:
                        id: label1
                        height: 50
                        size_hint: [1, None]
                        text: 'Code:'
                    TextInput:
                        id: text1
                        height: 50
                        size_hint: [1, None]
                        text: 'Add Code'

1 个答案:

答案 0 :(得分:0)

如果我完全理解这个问题。 建议您在有文本输入的地方将其写入变量

喜欢:

before_action

,从那时起,我将重新分配到选项卡2上的文本框 喜欢:

string = self.ids.text1.text

当然,第一个选项卡将需要一个on_leave:函数,该函数将textinput传递给变量,而第二个选项卡将需要一个on_enter:函数来写入textinput

让我知道这是否还不够清楚。