gpt4 book ai didi

android - 简单的 kivy 选项卡示例

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:32:37 24 4
gpt4 key购买 nike

我是使用 Kivy 进行 Android 开发的新手。我创建了一个如下所示的标签结构:

from kivy.app import App
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.tabbedpanel import TabbedPanelHeader
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.image import Image

class TabbedPanelApp(App):
def build(self):
tb_panel= TabbedPanel()

# Create text tab
th_text_head = TabbedPanelHeader(text='Text tab')
th_text_head.content= Label(text='This is my text content')

# Create image tab
th_img_head= TabbedPanelHeader(text='Image tab')
th_img_head.content= Image(source='sample.jpg',pos=(400, 100), size=(400, 400))

# Create button tab
th_btn_head = TabbedPanelHeader(text='Button tab')
th_btn_head.content= Button(text='This is my button',font_size=20)

tb_panel.add_widget(th_text_head)
tb_panel.add_widget(th_img_head)
tb_panel.add_widget(th_btn_head)

return tb_panel

if __name__ == '__main__':
TabbedPanelApp().run()

我想将登录小部件添加到默认选项卡。登录小部件的代码是:

import kivy 
kivy.require('1.0.5')

from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty, StringProperty

class loginView(Widget):
status=ObjectProperty(None)
def validate(self,username,password):
print "user - ", username
print "pwd - ", password
if username == password:
print "in if - ", username,password
self.status.text="Login sucess"
#mainClass().run()
else:
self.status.text="Login failed"

class afterLogin(Widget):
def dumb(self):
l = BoxLayout(cols="2")
btn = Button(text="ad")
l.add_widget(btn)
print "flag"

class mainClass(App):
def build(self):
return loginView()

if __name__ == '__main__':
mainClass().run()

kv 文件是:

#:kivy 1.0.5 

<loginView>:
status:result
Label:
text:"Contacts Manager"
pos:600,600
font_size:40


Label:
text:"Username"
pos:450,400

Label:
text:"Password"
pos:450,300

TextInput:
multiline:False
pos:600,425
size:200,45
font_size:20
id:username

TextInput:
multiline:False
pos:600,325
password:True
size:200,45
font_size:20
id:password
Button:
text:"Login"
size:100,50
pos:600,250
on_press:root.validate(username.text,password.text)
Label:
text:""
pos:600,100
id:result
<afterLogin>:
Label:
text:"Welcome"

如何将此代码添加到默认选项卡中?

最佳答案

您可以使用以下 2 个属性:default_tab_textdefault_tab_content

因此,假设您的登录代码是以下代码(您的行不通):

import kivy 
kivy.require('1.0.5')

from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.lang import Builder

Builder.load_string("""
<Loginview>:
cols:2
padding: 200
Label:
text: "username"
TextInput:
Label:
text: "password"
TextInput:
""")

#Name of classes are always uppercase
class LoginView(GridLayout):
pass

假设该代码与 main.py(具有 TabbedPanelApp 的代码)位于同一文件夹中。然后

1)导入LoginView(我把它大写,因为它是一个类)

from login import LoginView

2)修改TabbedPanelAppbuild方法如下

class TabbedPanelApp(App):
def build(self):
tb_panel= TabbedPanel()
tb_panel.default_tab_text = "Login Tab"
tb_panel.default_tab_content = LoginView()

您还可以使用 default_tab_cls 属性修改整个 TabbedPanelHeader,甚至可以使用 do_default_tab 属性停用默认选项卡。所以,你有很多选择。看看doc

关于android - 简单的 kivy 选项卡示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17120239/

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