- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应用程序,其固定标题中带有三个切换按钮,该标题是屏幕管理器的外部缩进布局。初始化时,导入屏幕必须显示,即 self.ids.scrn_man.current = 'import_scn"
,按下切换按钮时,下一个屏幕应显示,即 on_state: scrn_man.current = "settings_scrn”
。
但由于某种原因,仅显示标题,并且屏幕不想转换。我没有收到任何错误。
我尝试了不同的布局作为我的 Apps 主类继承,包括 FloatLayout
、StackLayout
和 BoxLayout
。我还使用 AnchorLayout
固定标题,并使用不同的布局作为 ScreenManager
的内联布局。如果我删除 ScreenManager
我会看到我的小部件,但当然,我无法转换。我一开始尝试使用 TabbedPanel 来容纳不同的小部件,但如果我添加了太多小部件(但现在还不是),我会遇到一个持续的 RefError:弱对象引用
。因此,我用我知道可以在以前的应用程序上使用的东西重新设计,尽管不那么复杂。
这是我的错误代码:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.stacklayout import StackLayout
from kivy.uix.togglebutton import ToggleButton
from kivy.lang import Builder
from kivy.uix.popup import Popup
from kivy.properties import StringProperty, ObjectProperty
Builder.load_string("""
<RoundedButton@Button>:
background_color: 0,0,0,0
canvas.before:
Color:
rgba: (.47,.47,.47,1) if self.state=='normal' else (1,.6,0,1)
RoundedRectangle:
pos: self.pos
size: self.size
radius: [8,]
<RoundedCancelButton@Button>:
background_color: 0,0,0,0
canvas.before:
Color:
rgba: (.47,.47,.47,1) if self.state=='normal' else (1,.2,.2,1)
RoundedRectangle:
pos: self.pos
size: self.size
radius: [8,]
<RoundedAcceptButton@Button>:
background_color: 0,0,0,0
canvas.before:
Color:
rgba: (.47,.47,.47,1) if self.state=='normal' else (.2,1,.6,1)
RoundedRectangle:
pos: self.pos
size: self.size
radius: [8,]
<TabbedContainer@ToggleButton>:
background_color: (1, .5, 0, 1)
background_normal: ''
size_hint_y: None
height: 50
size_hint_x: (1 / 3)
spacing: 30
<Tab>:
canvas.before:
Color:
rgba: (.89, .89, .89, 1)
Rectangle:
size: self.size
pos: self.pos
orientation: 'lr-tb'
BoxLayout:
orientation: 'horizontal'
size_hint_y: None
height: 30
canvas.before:
Color:
rgba: (1, .3, 0, 1)
Rectangle:
size: self.size
pos: self.pos
Label:
text: 'Test'
color: (1, 1, 1, 1)
size_hint_x: 1
StackLayout:
orientation: 'lr-tb'
Label:
text: ''
size_hint_x: 1
size_hint_y: None
height: 10
TabbedContainer:
id: import_tog
text: 'Import'
state: 'down'
group: 'admin_navs'
on_state: root.change_screen(self)
TabbedContainer:
id: calculate_tog
text: 'Calculate'
group: 'admin_navs'
on_state: root.change_screen(self)
TabbedContainer:
id: settings_tog
text: 'Settings'
group: 'admin_navs'
on_state: root.change_screen(self)
BoxLayout:
id: ui_content
padding: 10
ScreenManager: #Problem here I think
id: scrn_man
Screen:
id: import_scrn
name: 'import_scrn'
StackLayout:
orientation: 'lr-tb'
Label:
text: ''
size_hint_x: 1
Label:
text: ''
size_hint_x: 0.2
RoundedButton:
text: 'Choose File'
size_hint_x: 0.2
TextInput:
id: get_file
readonly: True
size_hint_x: 0.5
Label:
text: ''
size_hint_x: 0.1
Label:
text: ''
size_hint_x: 0.2
RoundedButton:
text: 'Import'
size_hint_x: 0.2
Label:
text: ''
size_hint_x: 0.6
StackLayout:
id: import_data_content
orientation: 'lr-tb'
size_hint_y: None
height: 90
Screen:
id: calculate_scrn
name: 'calculate_scrn'
Screen:
id: settings_scrn
name: 'settings_scrn'
StackLayout:
orientation: 'lr-tb'
size_hint_x: 0.5
Label:
text: ''
size_hint_x: 0.1
Button:
text: 'Add Employee'
size_hint_x: 0.2
Label:
text: ''
size_hint_x: 0.2
Button:
text: 'CSV'
size_hint_x: 0.2
Label:
text: ''
size_hint_x: 0.3
BoxLayout:
orientation: 'horizontal'
size_hint_x: 0.5
Label:
text: 'In Time'
size_hint_x: 0.7
TextInput:
size_hint_x: 0.3
Label:
text: 'Out Time'
size_hint_x: 0.7
TextInput:
size_hint_x: 0.3
""")
class TabbedContainer(ToggleButton):
pass
class FileChoosePopup(Popup):
load = ObjectProperty()
class RoundedButton(Button):
pass
class RoundedCancelButton(Button):
pass
class RoundedAcceptButton(Button):
pass
class Tab(StackLayout):
file_path = StringProperty("No file chosen")
the_popup = ObjectProperty(None)
def __init__(self, **kwargs):
super().__init__(**kwargs)
#load import window on initialisation
import_window = self.ids.import_scrn
self.ids.scrn_man.current = 'import_scrn'
def change_screen(self, instance):
if instance.text == 'Import':
self.ids.scrn_man.current = 'import_scrn'
elif instance.text == 'Calculate':
self.ids.scrn_man.current = 'calculate_scrn'
else:
self.ids.scrn_man.current = 'settings_scrn'
class TestApp(App):
def build(self):
return Tab()
if __name__ == '__main__':
TestApp().run()
我希望导入屏幕必须在初始化时显示,并且屏幕在切换按钮状态:向下
上转换。有人可以给我一些关于如何使我的应用程序按上述方式运行的建议吗?
最佳答案
您的屏幕正在根据您的设置正确加载。您需要检查您的整个 kv
字符串,查看您的 size_hint
设置。检查包含子项的每个项目,并确保其子项的 size_hint_x
总和小于或等于 1.0,并且 size_hint_y
的总和相同。
关于python - 为什么屏幕无法以 Kv 语言加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55670015/
完美的功能代码: from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import S
我尝试使用 kv_t 存储一些数据但没有成功。我也尝试过例子forum.c & kv.c。当尝试创建第二个论坛线程时,forum.c 挂起,而 kv.c 崩溃。 当我向 kv 添加 1 个项目时,kv
my %hash = two => 2, three => 3, one => 1, ; for %hash.sort(*.key)>>.kv -> ($key, $v
我正在尝试输出同一个键的 SUM 和 COUNT 。例如。给定一个包含数百万个飞机延误事件的 .csv。使用 Apache Beam (Java),我想对每架飞机的延误持续时间进行求和,并计算每架飞机
我在 Consul 上存储了这些 KV 源: config/books/ config/common/ 在我的 Spring Boot 应用程序 application.yml 中,我将其配置如下:
所以我只是使用一些示例 Kivy 文件代码,我遇到了这段允许用户在屏幕之间切换的代码: from kivy.app import App from kivy.lang import Builder f
我一辈子都想不出如何通过 KV 文件在自定义小部件上传递自定义属性。我的应用程序是一个包含 Button() 和 TestWidget() 的简单网格。 TestWidget() 有一个 String
我希望在 Kivy 中使用 SVG,但我更喜欢在 kv 文件中使用,而不是在 py 程序中。但是,当我尝试诸如 Widget: canvas.before: Svg:
我想提取网址查询参数,并且按照this forum answer的要求,我可以使用kv {} 但我想了解这是如何工作的。 这是我的字符串:param1=val1¶m2=val2&adv=val
我的 Kivy 语言文件有许多 font_size 属性,所有属性都具有相同的值,是否可以在 KV lang 中分配变量? 当前 KV 文件示例: #User ID Label:
我有一个应用程序,其固定标题中带有三个切换按钮,该标题是屏幕管理器的外部缩进布局。初始化时,导入屏幕必须显示,即 self.ids.scrn_man.current = 'import_scn",按下
我遇到了与本主题 kv incorrect 中所述相同的问题.当我使用 Builder 并加载 kv 文件时,我有正常工作的应用程序。但是当我尝试使用自动加载 kv 文件时,我只有黑屏。有人可以向我解
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在尝试将我的小部件创建转移到 .kv 而不是我的 main.py。我怎样才能仍然引用我的 on_press 命令? painter 是另一个子部件,包含我想调用的函数,但是我不确定如何从 .kv
一直在查看文档,但找不到如何在 kv 中正确屏蔽图像。这是我的 kv 代码: : source: 'http://webserver/120x100.png' canvas.befor
我有我的 python 代码: from kivy.app import App from kivy.uix.scatter import Scatter from kivy.uix.label im
我似乎无法为一个简单的应用程序设置背景图像。我是 kivy 的新手,对 python 有点陌生。这看起来很简单,但我发现所有示例都在 .py 文件中使用 kv 语言,而不是我想学习如何使用的 .kv
我的程序的一部分涉及用户输入自己的文本。我想要一个标签更改为输入的值,该值将存储在全局变量中。 基本上发生了什么 chosen = StringProperty() : BoxLayout:
我正在学习编写 Kivy 应用程序。我创建了一个由两个网格布局组成的玩具应用程序。一个包含两个按钮,另一个包含两个标签。任务是在单击按钮时修改标签。当所有布局都在同一个 .kv 文件中时,我可以通过简
我注意到我在网上找到的大多数示例都没有外部 .kv 文件。他们在内部定义所有实例。然而他们也说拥有外部 .kv 文件是一个很好的做法。做什么比较好?如果拥有外部 .kv 文件更好,那么我应该如何使用使
我是一名优秀的程序员,十分优秀!