Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用启动屏幕实现Kivy应用程序时出错_Python 3.x_User Interface_Kivy_Splash Screen - Fatal编程技术网

Python 3.x 使用启动屏幕实现Kivy应用程序时出错

Python 3.x 使用启动屏幕实现Kivy应用程序时出错,python-3.x,user-interface,kivy,splash-screen,Python 3.x,User Interface,Kivy,Splash Screen,我正在用Kivy用Python3实现一个基于GUI的应用程序。我的应用程序需要有两个屏幕。第一个是停留5秒钟的启动屏幕,然后第二个屏幕必须出现。第二个屏幕是Kivy的Garden FileBrowser 我试图实现如下所示 class PgSplash(Screen): def skip(self, dt): screen.switch_to(pages[1]) def on_enter(self, *args): Clock.schedul

我正在用Kivy用Python3实现一个基于GUI的应用程序。我的应用程序需要有两个屏幕。第一个是停留5秒钟的启动屏幕,然后第二个屏幕必须出现。第二个屏幕是Kivy的Garden FileBrowser

我试图实现如下所示

class PgSplash(Screen):


    def skip(self, dt):
        screen.switch_to(pages[1])

    def on_enter(self, *args):
        Clock.schedule_once(self.skip, 5)


class PgBrowser(Screen):

    def on_pre_enter(self, *args):
        user_path = os.path.join(browser_base.get_home_directory(), 'Documents')
        browser = browser_base.FileBrowser(select_string='Select',
                              favorites=[(user_path, 'Documents')])
        browser.bind(on_success=self._fbrowser_success,
                     on_canceled=self._fbrowser_canceled,
                     on_submit=self._fbrowser_submit)

        self.add_widget(browser)


    def _fbrowser_canceled(self, instance):
        print('cancelled, Close self.')
        self.root_window.hide()
        sys.exit(0)


    def _fbrowser_success(self, instance): # select pressed
        global file

        print(instance.selection)

        file = instance.selection[0]


    def _fbrowser_submit(self, instance): # clicked on the file
        global file

        print(instance.selection)

        file = instance.selection[0]

pages = [PgSplash(name="PgSplash"),
             PgBrowser(name="PgBrowser")]

screen = ScreenManager()
screen.add_widget(pages[0])


class myApp(App):
    def build(self):
        screen.current = "PgSplash"
        return screen

myApp().run()
 Traceback (most recent call last):
   File "kivy\properties.pyx", line 836, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:12509)
 KeyError: 'icon_view'

 During handling of the above exception, another exception occurred:

 Traceback (most recent call last):
   File "C:/Users/Spectre/Desktop/Project/base.py", line 219, in <module>
     myApp().run()
   File "F:\Anaconda3\lib\site-packages\kivy\app.py", line 828, in run
     runTouchApp()
   File "F:\Anaconda3\lib\site-packages\kivy\base.py", line 504, in runTouchApp
     EventLoop.window.mainloop()
   File "F:\Anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 663, in mainloop
     self._mainloop()
   File "F:\Anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 405, in _mainloop
     EventLoop.idle()
   File "F:\Anaconda3\lib\site-packages\kivy\base.py", line 339, in idle
     Clock.tick()
   File "F:\Anaconda3\lib\site-packages\kivy\clock.py", line 581, in tick
     self._process_events()
   File "kivy\_clock.pyx", line 367, in kivy._clock.CyClockBase._process_events (kivy\_clock.c:7700)
   File "kivy\_clock.pyx", line 397, in kivy._clock.CyClockBase._process_events (kivy\_clock.c:7577)
   File "kivy\_clock.pyx", line 395, in kivy._clock.CyClockBase._process_events (kivy\_clock.c:7498)
   File "kivy\_clock.pyx", line 167, in kivy._clock.ClockEvent.tick (kivy\_clock.c:3490)
   File "C:\Users\Spectre\Desktop\Project\browser_base.py", line 320, in _post_init
     self.ids.icon_view.bind(selection=partial(self._attr_callback, 'selection'),
   File "kivy\properties.pyx", line 839, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:12654)
 AttributeError: 'super' object has no attribute '__getattr__'
运行此程序时,启动屏幕出现,程序崩溃,出现如下所示的错误

class PgSplash(Screen):


    def skip(self, dt):
        screen.switch_to(pages[1])

    def on_enter(self, *args):
        Clock.schedule_once(self.skip, 5)


class PgBrowser(Screen):

    def on_pre_enter(self, *args):
        user_path = os.path.join(browser_base.get_home_directory(), 'Documents')
        browser = browser_base.FileBrowser(select_string='Select',
                              favorites=[(user_path, 'Documents')])
        browser.bind(on_success=self._fbrowser_success,
                     on_canceled=self._fbrowser_canceled,
                     on_submit=self._fbrowser_submit)

        self.add_widget(browser)


    def _fbrowser_canceled(self, instance):
        print('cancelled, Close self.')
        self.root_window.hide()
        sys.exit(0)


    def _fbrowser_success(self, instance): # select pressed
        global file

        print(instance.selection)

        file = instance.selection[0]


    def _fbrowser_submit(self, instance): # clicked on the file
        global file

        print(instance.selection)

        file = instance.selection[0]

pages = [PgSplash(name="PgSplash"),
             PgBrowser(name="PgBrowser")]

screen = ScreenManager()
screen.add_widget(pages[0])


class myApp(App):
    def build(self):
        screen.current = "PgSplash"
        return screen

myApp().run()
 Traceback (most recent call last):
   File "kivy\properties.pyx", line 836, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:12509)
 KeyError: 'icon_view'

 During handling of the above exception, another exception occurred:

 Traceback (most recent call last):
   File "C:/Users/Spectre/Desktop/Project/base.py", line 219, in <module>
     myApp().run()
   File "F:\Anaconda3\lib\site-packages\kivy\app.py", line 828, in run
     runTouchApp()
   File "F:\Anaconda3\lib\site-packages\kivy\base.py", line 504, in runTouchApp
     EventLoop.window.mainloop()
   File "F:\Anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 663, in mainloop
     self._mainloop()
   File "F:\Anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 405, in _mainloop
     EventLoop.idle()
   File "F:\Anaconda3\lib\site-packages\kivy\base.py", line 339, in idle
     Clock.tick()
   File "F:\Anaconda3\lib\site-packages\kivy\clock.py", line 581, in tick
     self._process_events()
   File "kivy\_clock.pyx", line 367, in kivy._clock.CyClockBase._process_events (kivy\_clock.c:7700)
   File "kivy\_clock.pyx", line 397, in kivy._clock.CyClockBase._process_events (kivy\_clock.c:7577)
   File "kivy\_clock.pyx", line 395, in kivy._clock.CyClockBase._process_events (kivy\_clock.c:7498)
   File "kivy\_clock.pyx", line 167, in kivy._clock.ClockEvent.tick (kivy\_clock.c:3490)
   File "C:\Users\Spectre\Desktop\Project\browser_base.py", line 320, in _post_init
     self.ids.icon_view.bind(selection=partial(self._attr_callback, 'selection'),
   File "kivy\properties.pyx", line 839, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:12654)
 AttributeError: 'super' object has no attribute '__getattr__'
回溯(最近一次呼叫最后一次):
文件“kivy\properties.pyx”,第836行,在kivy.properties.observedict.\uuuu getattr\uuuu(kivy\properties.c:12509)中
KeyError:“图标\视图”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“C:/Users/Spectre/Desktop/Project/base.py”,第219行,在
myApp().run()
文件“F:\Anaconda3\lib\site packages\kivy\app.py”,第828行,正在运行
runTouchApp()
runTouchApp中的文件“F:\Anaconda3\lib\site packages\kivy\base.py”,第504行
EventLoop.window.mainloop()
文件“F:\Anaconda3\lib\site packages\kivy\core\window\window\u sdl2.py”,第663行,在mainloop中
self._mainloop()
文件“F:\Anaconda3\lib\site packages\kivy\core\window\window\u sdl2.py”,第405行,在mainloop中
EventLoop.idle()
文件“F:\Anaconda3\lib\site packages\kivy\base.py”,第339行,处于空闲状态
时钟滴答作响
文件“F:\Anaconda3\lib\site packages\kivy\clock.py”,第581行,勾选
self.\u进程\u事件()
文件“kivy\\u clock.pyx”,第367行,在kivy.\u clock.CyClockBase.\u process\u events(kivy\\u clock.c:7700)中
文件“kivy\\u clock.pyx”,第397行,在kivy.\u clock.CyClockBase.\u process\u events(kivy\\u clock.c:7577)中
文件“kivy\\u clock.pyx”,第395行,在kivy.\u clock.CyClockBase.\u process\u events(kivy\\u clock.c:7498)中
文件“kivy\\u clock.pyx”,第167行,在kivy.\u clock.ClockEvent.tick(kivy\\u clock.c:3490)中
文件“C:\Users\Spectre\Desktop\Project\browser\u base.py”,第320行,在\u post\u init中
self.ids.icon\u view.bind(selection=partial(self.\u attr\u回调,'selection'),
文件“kivy\properties.pyx”,第839行,位于kivy.properties.observedict.\uuuu getattr\uuuu(kivy\properties.c:12654)
AttributeError:“super”对象没有属性“\uuu getattr\uuuu”
问题是什么?我做错了什么?如何解决这个问题。

解决方案 我可以通过执行以下操作使应用程序正常工作,并删除了self.root\u window.hide(),因为“AttributeError:'PgBrowser'对象没有属性'root\u window'。我的环境是Ubuntu 16.04 LTS、Python 3.5和Kivy 1.10.0

片段 例子 main.py 试验电压(千伏)
#:kivy 1.10.0
:
PgSplash:
PGB浏览器:
:
名称:'PgSplash'
主持人安排:
图片:
资料来源:“kivyLogo.png”
大小提示:1,1
:
名称:“PgBrowser”
输出

解决方案 我可以通过执行以下操作使应用程序正常工作,并删除了self.root\u window.hide(),因为“AttributeError:'PgBrowser'对象没有属性'root\u window'。我的环境是Ubuntu 16.04 LTS、Python 3.5和Kivy 1.10.0

片段 例子 main.py 试验电压(千伏)
#:kivy 1.10.0
:
PgSplash:
PGB浏览器:
:
名称:'PgSplash'
主持人安排:
图片:
资料来源:“kivyLogo.png”
大小提示:1,1
:
名称:“PgBrowser”
输出

#:kivy 1.10.0

<MyScreenManager>:
    PgSplash:
    PgBrowser:

<PgSplash>:
    name: 'PgSplash'
    AnchorLayout:
        Image:
            source: 'kivyLogo.png'
            size_hint: 1,1

<PgBrowser>:
    name: 'PgBrowser'