python - 如何在单独的窗口中添加滚动视图?
问题描述
我想在我的 1 个屏幕和同一个屏幕上添加一个滚动视图。我想要一个重定向到主屏幕的按钮。下面显示的代码似乎不起作用。这是我的python代码(假设我已经导入了相关模块):
class Main(Screen):
pass
class View(Screen):
view = ObjectProperty(Non
def __init__(self, **kwargs):
super(View, self).__init__(**kwargs)
Clock.schedule_once(self.create_scrollview)
def create_scrollview(self, dt):
base = ["element {}".format(i) for i in range(40)]
layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
layout.bind(minimum_height=layout.setter("height"))
for element in base:
layout.add_widget(Button(text=element, size=(50, 50), size_hint=(1, None),background_color=(0.5, 0.5, 0.5, 1), color=(1, 1, 1, 1)))
scrollview = ScrollView(size_hint=(1, None), size=(Window.width, Window.height))
scrollview.add_widget(layout)
self.view.add_widget(scrollview)
class Manager(ScreenManager): #transition of windows
def __init__(self, **kwargs):
super(Manager, self).__init__(**kwargs)
pass
kv = Builder.load_file('main.kv')
class NotesApp(App):
def build(self):
return kv
if __name__ == '__main__':
NotesApp().run()
这是我的 kv 文件:
Manager:
Main:
View:
<Button>:
font_size:35
<Label>:
font_size:45
<Main>:
name:'main'
<View>:
name: 'view'
FloatLayout:
Button:
pos_hint:{'x':0.2,'top':0.975}
size_hint:0.6,0.15
text: 'Back'
on_release:
app.root.current = 'main'
root.manager.transition.direction = 'right'
解决方案
.kv 文件
- 添加
id: view
到FloatLayout:
view: view
在类规则下添加,<View>:
。这是为了将 ObjecProperty 连接到 id。- 添加
id: btn_view
到Button:
- 切换画面前先设置过渡方向
kv - 片段
<View>:
name: 'view'
view: view
FloatLayout:
id: view
Button:
id: btn_view
pos_hint: {'x':0.2, 'top':0.975}
size_hint: 0.6, 0.15
text: 'Back'
on_release:
root.manager.transition.direction = 'right'
root.manager.current = 'main'
Python 脚本
- 用 Button 小部件的高度减去 ScrollView 的高度
Python - 片段
scrollview = ScrollView(size_hint=(1, None), size=(Window.width, Window.height - self.ids.btn_view.height),
bar_width=8, bar_color=[1, 0, 0, 1], bar_inactive_color=[0, 0, 1, 1],
effect_cls="ScrollEffect", scroll_type=['bars'])
输出
推荐阅读
- azure-active-directory - 带有 OpenIdConnect 的 IIS 反向代理转到错误的身份提供程序
- python-3.x - 标准缩放器 v 最小最大。Standardscaler 不适用于 ANN,但 MInMax 可以
- java - 如何在 LWJGL 3 中使用 glfwSetWindowUserPointer?
- javascript - 为什么 append() 添加标记多次而不是一次?
- postgresql - 除了删除数据库集群之外,还保留一个静态的大型 Postgres 数据库吗?
- svg - SVG | 擦除另一条路径的一部分
- c# - Linq to Entities:其中包含 1 个值和许多列
- javascript - MiniCssExtractPlugin 没有创建 css 文件
- http - 控制台上的响应与网络上的预览不同
- google-cloud-platform - 在 BigQuery 中使用 MAX 值展平结果