我目前正在使用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'
答案 0 :(得分:0)
如果我完全理解这个问题。 建议您在有文本输入的地方将其写入变量
喜欢:
before_action
,从那时起,我将重新分配到选项卡2上的文本框 喜欢:
string = self.ids.text1.text
当然,第一个选项卡将需要一个on_leave:函数,该函数将textinput传递给变量,而第二个选项卡将需要一个on_enter:函数来写入textinput
让我知道这是否还不够清楚。