python - 如何从弹出窗口向 boxlayout 添加新标签?
问题描述
我的屏幕有两个盒子布局。第一个是空的。第二个有打开弹出窗口的按钮。在弹出窗口中,我有 2 个文本输入和复选框。我也想将这些文本输入作为标签添加到该 boxlayout 和复选框中。
如果我在该屏幕上有按钮,我可以将按钮添加到 boxlayout。但是一旦我们去弹出我不知道怎么做。
皮。
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.popup import Popup
from kivy.uix.button import Button
from kivy.uix.screenmanager import Screen, ScreenManager
class MyPopup(Popup):
pass
class MainScreen(Screen):
pass
class SecondScreen(Screen):
def fire_popup(self):
pops = MyPopup()
pops.open()
class ScreenManagement(ScreenManager):
def changescreen(self, value):
try:
if value !='main':
self.current = value
except:
print('No Screen named'+ value)
class testiApp(App):
def build(self):
self.title = 'Hello'
def add_more(self):
addbutton = self.root.get_screen('Page2').ids.empty
addbutton.add_widget(Button(text='Hello'))
def remove(self):
container = self.root.get_screen('Page2').ids.empty
if len(container.children) > 0:
container.remove_widget(container.children[0])
testiApp().run()
千伏。
<MyPopup>:
id:pop
size_hint: .4, .4
auto_dismiss: False
title: 'XXX!!'
BoxLayout:
orientation:'vertical'
BoxLayout:
orientation:'horizontal'
Label:
text:'X1'
TextInput:
id: X1
Label:
text:'X2'
TextInput:
id:X2
CheckBox:
id:X3
BoxLayout:
orientation:'horizontal'
Button:
text:'Add'
on_release: app.add_more()
Button:
text: 'Close'
on_press: pop.dismiss()
ScreenManagement:
MainScreen:
name:'Main'
SecondScreen:
name:'Page2'
<MainScreen>:
name:'Main'
BoxLayout:
Button:
text:'Next Page'
on_release: app.root.current ='Page2'
<SecondScreen>:
name:'Page2'
BoxLayout:
orientation:'vertical'
BoxLayout:
orientation:'vertical'
Label:
text:'Popup Test'
ScrollView:
GridLayout:
orientation: "vertical"
size_hint_y: None
height: self.minimum_height
row_default_height: 60
cols:1
id:empty
BoxLayout:
Button:
text:'Open Popup'
on_press: root.fire_popup()
Button:
text:'Add'
on_release: app.add_more()
Button:
text:'remove'
on_release: app.remove()
解决方案
如果我了解您要执行的操作,则可以通过保存对在您的中创建的的引用来text
从您的:TextInput
MyPopup
SecondScreen
class SecondScreen(Screen):
def fire_popup(self):
self.pops = MyPopup()
self.pops.open()
add_more()
然后在您的方法中使用该引用:
def add_more(self):
addbutton = self.root.get_screen('Page2').ids.empty
addbutton.add_widget(Button(text=self.root.current_screen.pops.ids.X1.text))
当然,你可以参考X2
类似的。
推荐阅读
- r - 在 R 中批量处理和导出 CSV 文件列表
- android - 如何处理我的应用推荐金额?
- flutter - 如何在列表视图中添加视频
- gradle - Artifactory 目录包含点,无法使用 Gradle 6.5 解决依赖关系
- css - 从不同的 SCSS 文件加载填充/边距
- .htaccess - 获取错误服务器无法读取 htaccess 文件,拒绝访问是安全的。我的服务器不断自动更改回权限 710
- .net - Entity Framework 中的 DbEntityEntry 和 Changetracker 有什么区别?
- lua - 使用远程事件在 roblox 中将人们从监狱中救出来似乎无法正常工作
- python-3.x - 迭代和替换具有多个值的列和行
- java - startactivity 后显示小吃吧