.kv
在OSX 上的PyCharm中对文件进行语法高亮显示需要哪些步骤?
kivy语言可以访问继承的布局和小部件吗?我想创建一个基本的BoxLayout,其中包含我的小部件的样式和标题标签.我希望能够从这个小部件继承并在不同的位置添加其他小部件.
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
Builder.load_string('''
<SimpleBar>:
canvas.before:
Color:
rgba: 0, 0.5, 0.5, 1
Rectangle:
pos: self.pos
size: self.size
BoxLayout:
id: my_layout
Label:
text: "hi"
<NewBar>:
Label:
text: "2"
''')
class SimpleBar(BoxLayout):
def log(self, value):
print(value)
class NewBar(SimpleBar):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
print(dir(self))
class GeneralApp(App):
def build(self):
return NewBar()
if __name__ == '__main__':
GeneralApp().run()
Run Code Online (Sandbox Code Playgroud)
以上是我的基本运行小部件.
我希望NewBar的"2"标签位于SimpleBar的'hi'标签之前,如下所示.
<NewBar>:
BoxLayout:
id: my_layout
Label:
text: "2"
Label:
text: "hi"
Run Code Online (Sandbox Code Playgroud)
我知道 - 可以否定物品.但是,<-NewBar> …
我正在开发一个Kivy项目,当列表中没有元素时,我需要显示一个标签.否则,我需要显示一个列表视图.
这些是我描述的两个场景:
这是我的Kivy文件:
#: kivy 1.9.1
#: import ListAdapter kivy.adapters.listadapter.ListAdapter
#: import FriendItemButton gui.FriendItemButton
ChumMeRoot:
<ChumMeRoot>:
friend_list_view: friend_list_view
FriendList:
id: friend_list_view
<FriendItemButton>:
text: self.full_name
height: "40dp"
size_hint_y: None
<FriendList>:
orientation: 'vertical'
friend_list: friend_list_view
Button:
height: '45dp'
size_hint_y: None
text: 'Add Friend'
on_press: app.root.show_add_friend_form()
ListView:
id: friend_list_view
adapter:
ListAdapter(
data=[],
cls=FriendItemButton,
args_converter=root.args_converter)
<AddFriendFormInput@BoxLayout>
height: '30dp'
size_hint_y: None
<AddFriendForm>:
orientation: 'vertical'
first_name_input: first_name
last_name_input: last_name
AddFriendFormInput:
Label:
text: 'First Name'
TextInput:
id: first_name
AddFriendFormInput:
Label:
text: 'Middle Name'
TextInput:
AddFriendFormInput: …
Run Code Online (Sandbox Code Playgroud) 我有两个文件demo.py
和demo.kv
.can有人帮助我吗?
1
.+Add More
添加行动态.当我点击时填充值Total Value
后,它显示字符串,如.151012
不显示12+10+15=37
.我正在使用代码
test = ''
for val in values:
test = val[2]+test
self.total_value.text = test
Run Code Online (Sandbox Code Playgroud)
2
.任何人都可以告诉我如何Total value
在填充value
TextBox 之后在TextBox中放置值的总和而不是单击Total Value
Box.Means如何def test(self)
从value
TextBox 调用函数?
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import BooleanProperty, ListProperty, StringProperty, ObjectProperty, NumericProperty
from kivy.uix.textinput import TextInput …
Run Code Online (Sandbox Code Playgroud) 我一直在尝试通过使用 Kivy 时钟从 kivy 文件 (.kv) 访问不同类的 id/widget来建立我的 kv 语言技能?通过使用kv 语言中Kivy 屏幕管理器参考中的信息。不幸的是,后一篇文章没有包含完整的工作代码示例,所以我无法理解如何在多屏幕 Kivy 应用程序的特定屏幕上更改文本元素。
在搜索了一天的大部分时间后,我找不到任何关于如何用 kv 语言构建多屏应用程序的简单具体的工作示例,所以我在这里。我似乎无法设置对各个屏幕的正确引用,因此我可以更改它们。
在下面的简单示例代码中,我构建了一个四屏应用程序,可以在四个屏幕之间自动切换。我想从这个问题中学到两件事;
将设置尽可能多的屏幕管理器的 kv 语言代码。IE。kv 语言可以减少或消除第 43 到 47 行吗?
实际的 python 代码(我相信它会出现在应用程序的第 56 行)在第二次显示之前将第一个屏幕上的文本更改为“嗨,我是第五个屏幕”。
代码如下。提前致谢。……布拉德……
import kivy
kivy.require('1.10.0')
from kivy.app import App
from kivy.lang import Builder
from kivy.clock import Clock
from kivy.uix.screenmanager import ScreenManager, Screen
Builder.load_string("""
<FirstScreen>:
name: '_first_screen_'
Label:
id: first_screen
text: "Hi I'm The First Screen"
<SecondScreen>:
name: '_second_screen_'
Label:
id: second_screen
text: …
Run Code Online (Sandbox Code Playgroud) 我正在尝试包中的示例代码kivy_examples
。在配备 Retina 显示屏的 Macbook Pro 上,它还连接到具有标准像素密度的外部显示器。
当我启动任何示例应用程序时,窗口首先出现在内置 Retina 显示屏上,并且看起来不错。然后,当我将该窗口拖动到外部显示器时,突然所有小部件的大小都放大了。
StackOverflow 上存在许多涉及 Kivy 和像素密度的问题。但问题和答案似乎都涉及单屏用例。您不知道目标屏幕的密度可能是多少,因此以下是如何使用该dp(...)
功能在应用程序启动时配置该屏幕等。
但是,我找不到任何涉及多显示器用例的讨论。当应用程序在多个显示器之间移动时,有什么方法可以让 Kivy 应用程序动态响应像素密度变化?与在启动时配置固定密度级别相反?
在Kivy,是否可以采用类似于以下示例的方法?
发布的代码显然不起作用,而且它只是一个例子:我需要根据某个属性绘制不同的布局.
你会怎么建议这样做?
BoxLayout:
number: 0
if self.number > 3:
Label:
text: 'number is bigger than 3'
Button:
text: 'click here to decrease'
on_press: root.number -= 1
else:
Label:
text: 'number is smaller than 3'
Button:
text: 'click here to increase'
on_press: root.number += 1
Run Code Online (Sandbox Code Playgroud) 当我尝试在我的kali linux操作系统中使用python 3.5运行任何kivy程序时.然后我得到以下错误.
程序:-
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
Builder.load_string('''
<hey>:
RelativeLayout:
Button:
text:"Hey"
''')
class hey(RelativeLayout):
pass
class helloApp(App):
def build(self):
return hey()
if __name__=="__main__":
helloApp().run()
Run Code Online (Sandbox Code Playgroud)
错误:-
[INFO ] [OSC ] using <multiprocessing> for socket
[INFO ] [Window ] Provider: sdl2(['window_egl_rpi'] ignored)
[CRITICAL] [Window ] Unable to find any valuable Window provider at all!
egl_rpi - ImportError: cannot import name 'bcm'
File "/usr/lib/python3/dist-packages/kivy/core/__init__.py", line 59, in core_select_lib
fromlist=[modulename], level=0)
File "/usr/lib/python3/dist-packages/kivy/core/window/window_egl_rpi.py", line …
Run Code Online (Sandbox Code Playgroud) 我应该以我仍然是Kivy的新手开头。我试图寻找类似的问题,但它们要么过时,要么不清楚。
我一直在寻找一种显示元素列表的方法,在这些元素中,一个使用过的元素可以选择一个元素以与其他小部件(按钮等)进行交互。我偶然发现了ListView的文档页面,但明确指出不赞成使用ListView,而必须使用RecycleView。
现在的问题是(至少对我来说)文档关于如何使用RecycleView不太清楚。它肯定比其他小部件复杂,我似乎无法弄清楚。
要将其分解为更易消化的问题:1.如何定义充当项目列表的RecycleView?2.我该如何提供物品?3.我如何与之交互,特别是一次只能选择一项,检测何时选择了某项,并在事件发生时自动进行了某项选择?
哦,对了,我更喜欢尽可能使用kv语言。
在查找或理解文档资源方面,我将不胜感激,这些资源将使我能够更广泛地理解此信息,以备将来使用。我真的希望有一个针对这些复杂功能的教程,但是如果它存在的话,那真是很难找到它。
import kivy
kivy.require('1.9.0') # replace with your current kivy version !
import sqlite3 as lite
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
Window.clearcolor = (0, 0.517, 0.705, 1)
Window.size = (500, 330)
from easygui import msgbox
con = lite.connect('demo.db')
con.text_factory = str
cur = con.cursor()
class TestScreen(Screen):
pass
def get_user(self):
cur.execute("SELECT * FROM `user` order by id asc")
self.rows = cur.fetchall()
print(self.rows)
class List(App):
def build(self): …
Run Code Online (Sandbox Code Playgroud)