Python 2.7 使用kivy screen manager时出现黑屏
当我运行这段代码时,它会显示一个黑屏,但是当我使用关于ScreenManager的kivy文档中的示例时,它运行得很好。我在这篇文章中也尝试过这个解决方案,但它对我不起作用Python 2.7 使用kivy screen manager时出现黑屏,python-2.7,kivy,Python 2.7,Kivy,当我运行这段代码时,它会显示一个黑屏,但是当我使用关于ScreenManager的kivy文档中的示例时,它运行得很好。我在这篇文章中也尝试过这个解决方案,但它对我不起作用 import os from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen, SlideTransition from kivy.uix.widget im
import os
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, SlideTransition
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
VIEW = os.path.abspath(os.path.join(os.path.dirname(__file__), 'views', 'moorish.kv'))
class RootScreen(Screen):
pass
class Main(BoxLayout):
pass
class Header(BoxLayout):
pass
class SettingsScreen(Screen):
pass
class SettingsMain(Widget):
pass
class SettingsHeader(Widget):
pass
class Container(BoxLayout):
pass
class Circle(Widget):
pass
screen_manager = ScreenManager(transition=SlideTransition())
screen_manager.add_widget(RootScreen(name='main'))
screen_manager.add_widget(SettingsScreen(name='settings'))
class WifiApp(App):
def build(self):
Builder.load_file(VIEW)
return screen_manager
if __name__ == '__main__':
WifiApp().run()
这是.kv文件
<Header>
orientation: 'horizontal'
rows: 1
cols: 1
Container:
canvas:
# Background
Color:
rgba: 1, 1, 1, 0.9
Rectangle:
pos: self.pos
size: self.size
Circle:
on_touch_down:
root.manager.transition.direction = 'right'
root.manager.current = 'settings'
id: 'Settings'
canvas:
Ellipse:
pos: self.x + 30, self.y + 15
size: 60, 60
source: 'logos/setting.png'
Circle:
id: 'Connected'
canvas:
Ellipse:
pos: self.x - 50, self.y + 15
size: 60, 60
source: 'logos/connected.png'
Label:
text: 'Wi-Fi Remote'
font_size: '18sp'
color: 0, 0, 0, .9
right: 10
<Main>
cols: 2
rows: 2
canvas:
# Outer Background
Color:
rgba: 1, 1, 1, 0.4
Rectangle:
pos: self.pos
size: self.size
Container:
canvas:
# Inner Background
Color:
rgba: 1, 1, 1, 0.9
Rectangle:
pos: self.center_x - 150, self.center_y - 175
size: 300, 350
Circle:
id: '1'
canvas:
Ellipse:
pos: self.center_x + 50, self.center_y + 25
size: 100, 100
source: 'logos/1.png'
Circle:
id: '2'
canvas:
Ellipse:
pos: self.center_x - 75, self.center_y - 100
size: 100, 100
source: 'logos/2.png'
Circle:
id: '3'
canvas:
Ellipse:
pos: self.center_x - 25, self.center_y + 25
size: 100, 100
source: 'logos/3.png'
Circle:
id: '4'
canvas:
Ellipse:
pos: self.center_x - 150, self.center_y - 100
size: 100, 100
source: 'logos/4.png'
<SettingsHeader>
orientation: 'horizontal'
rows: 1
cols: 1
Container:
canvas:
# Background
Color:
rgba: 1, 1, 1, 0.9
Rectangle:
pos: self.pos
size: self.size
Circle:
id: 'Settings'
canvas:
Ellipse:
pos: self.x + 30, self.y + 15
size: 60, 60
source: 'logos/pointer.png'
Label:
text: 'Settings'
font_size: '18sp'
color: 0, 0, 0, .9
right: 10
<SettingsMain>
cols: 2
rows: 2
canvas:
# Outer Background
Color:
rgba: 1, 1, 1, 0.4
Rectangle:
pos: self.pos
size: self.size
Container:
canvas:
# Inner Background
Color:
rgba: 1, 1, 1, 0.9
Rectangle:
pos: self.center_x - 150, self.center_y - 175
size: 300, 350
BoxLayout:
TextInput:
TextInput:
Button:
text: 'Save'
<RootScreen>
orientation: 'vertical'
cols: 1
Header:
size_hint: 1, 0.15
Main:
size_hint: 1, 0.85
<SettingsScreen>
orientation: 'vertical'
cols: 1
SettingsHeader:
size_hint: 1, 0.15
SettingsMain:
size_hint: 1, 0.85
方向:“水平”
行数:1
科尔斯:1
容器:
画布:
#背景
颜色:
rgba:1,1,1,0.9
矩形:
pos:self.pos
大小:self.size
圆圈:
按下按钮时:
root.manager.transition.direction='right'
root.manager.current='settings'
id:“设置”
画布:
椭圆:
位置:自x+30,自y+15
尺码:60,60
来源:“logos/setting.png”
圆圈:
id:'已连接'
画布:
椭圆:
位置:自x-50,自y+15
尺码:60,60
来源:“logos/connected.png”
标签:
文本:“Wi-Fi远程”
字体大小:“18sp”
颜色:0,0,0,9
右:10
科尔斯:2
行数:2
画布:
#外部背景
颜色:
rgba:1,1,1,0.4
矩形:
pos:self.pos
大小:self.size
容器:
画布:
#内部背景
颜色:
rgba:1,1,1,0.9
矩形:
位置:自中心x-150、自中心y-175
尺码:300350
圆圈:
id:'1'
画布:
椭圆:
位置:自中心x+50、自中心y+25
尺码:100100
来源:“logos/1.png”
圆圈:
id:'2'
画布:
椭圆:
位置:自中心x-75,自中心y-100
尺码:100100
来源:“logos/2.png”
圆圈:
id:'3'
画布:
椭圆:
位置:自中心x-25,自中心y+25
尺码:100100
来源:“logos/3.png”
圆圈:
id:'4'
画布:
椭圆:
位置:自中心x-150、自中心y-100
尺码:100100
来源:“logos/4.png”
方向:“水平”
行数:1
科尔斯:1
容器:
画布:
#背景
颜色:
rgba:1,1,1,0.9
矩形:
pos:self.pos
大小:self.size
圆圈:
id:“设置”
画布:
椭圆:
位置:自x+30,自y+15
尺码:60,60
来源:“logos/pointer.png”
标签:
文本:“设置”
字体大小:“18sp”
颜色:0,0,0,9
右:10
科尔斯:2
行数:2
画布:
#外部背景
颜色:
rgba:1,1,1,0.4
矩形:
pos:self.pos
大小:self.size
容器:
画布:
#内部背景
颜色:
rgba:1,1,1,0.9
矩形:
位置:自中心x-150、自中心y-175
尺码:300350
盒子布局:
文本输入:
文本输入:
按钮:
文本:“保存”
方向:“垂直”
科尔斯:1
标题:
尺寸提示:1,0.15
主要内容:
尺寸提示:1,0.85
方向:“垂直”
科尔斯:1
设置引导器:
尺寸提示:1,0.15
设置主要:
尺寸提示:1,0.85
出什么事了?
提前感谢将屏幕管理器定义放在buildozer文件加载之后。例如:
class WifiApp(App):
def build(self):
Builder.load_file(VIEW)
screen_manager = ScreenManager(transition=SlideTransition())
screen_manager.add_widget(RootScreen(name='main'))
screen_manager.add_widget(SettingsScreen(name='settings'))
return screen_manager
kv文件中也有一些名称错误。是的,现在可以使用了,谢谢:)是的,修复了额外的类名。