簡體   English   中英

Kivy ScreenManager錯誤

[英]Kivy ScreenManager Errors

我是一個使用奇異語言的初學者。 我正在編寫應用程序,但遇到了一些困難。 我的應用程序將由幾個屏幕組成,所以我決定使用ScreenManager,但是每次嘗試啟動.py時,都會出現錯誤,這會使python沒有響應。 我已經將.py和.kv文件保存在同一文件夾中。

Traceback (most recent call last):
   File "C:\Users\Eng. Aladdin Hammodi\Desktop\kivy\main.py", line 15, in <module>
     presentation = Builder.load_file(Aladdin.kv)
 NameError: name 'Aladdin' is not defined

Python檔案:

import kivy
kivy.require("1.9.1")

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.popup import Popup
from kivy.core.window import Window
from kivy.uix.textinput import TextInput
from kivy.properties import ObjectProperty
from kivy.uix.button import Button
from kivy.lang import Builder

presentation = Builder.load_file(Aladdin.kv)


class ScreenOne(Screen):
    pass


class ScreenTwo(Screen):
    pass

class ScreenManager(ScreenManager):
    pass


class AladdinApp(App):
    def build(self):
        return presentation

sample_app = AladdinApp()
sample_app.run()

阿拉丁

<ScreenOne>:
    name:screen1

    FloatLayout:
        canvas:
            source:'image1'
        Label:
            text:'Hello\n Welcome to my app\n'
            font_size: 40

        Button:
            text: 'Next'
            pos: 0,1
            font_size:20
            hint_size:0.1,0.05
            on_press:root.manager.current='screen2'
<ScreenTwo>:
    name:screen2
    FloatLayout:
       canvas:
            source:'image1'
        Label:
            text:'Please insert your name'
            text:'Please insert your Password'
            font_size: 40

        Button:
            text: 'Next'
            pos: 0,1
            font_size:20
            hint_size:0.1,0.05
            on_press:root.manager.current='screen1'

問題出在行中:

presentation = Builder.load_file(Aladdin.kv)

Aladdin被解釋為變量。 如果要將字符串傳遞給方法,請按以下方式調用它:

presentation = Builder.load_file("Aladdin.kv")

這些文件有兩個問題:

  1. @Artur R. Czechowski已經指出缺少引號Builder.load_file('Aladdin.kv')
  2. 您沒有在kv文件或python代碼中定義根窗口小部件。 我通過在構建方法def build(self): return ScreenManager()返回它來更改了它def build(self): return ScreenManager()
  3. 它不是hint_size ,正確的是size_hint
  4. 我認為您嘗試使用圖片作為背景。 這是一種方法,請不要忘記以.jpg結尾的文件

canvas.before:
            Rectangle:
                pos:self.pos
                size: self.size
                source:'image1.jpg'

附帶說明:逐步構建應用程序很有意義。 編寫盡可能少的代碼,然后檢查。 再寫一些代碼,再次檢查。 與基維快樂編碼:)。

python代碼:

import kivy
kivy.require("1.9.1")

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.popup import Popup
from kivy.core.window import Window
from kivy.uix.textinput import TextInput
from kivy.properties import ObjectProperty
from kivy.uix.button import Button
from kivy.lang import Builder

#### in comment requested to also make cursor visible and not full screen ####
from kivy.config import Config 
Config.set('graphics', 'fullscreen', '0')
Config.set('graphics','show_cursor','1')
####

Builder.load_file('Aladdin.kv')


class ScreenOne(Screen):
    pass

class ScreenTwo(Screen):
    pass

class ScreenManager(ScreenManager):
    pass


class AladdinApp(App):
    def build(self):
        return ScreenManager()

AladdinApp().run()

修改后的kv文件:

<ScreenManager>:
    ScreenOne:
    ScreenTwo:

<ScreenOne>:
    name:'screen1'

    FloatLayout:
        canvas.before:
            Rectangle:
                pos:self.pos
                size: self.size
                source:'image1.jpg'
        Label:
            text:'Hello\n Welcome to my app\n'
            font_size: 40

        Button:
            text: 'Next'
            pos: 0,1
            font_size:20
            size_hint:0.1,0.05
            on_press:root.manager.current='screen2'
<ScreenTwo>:
    name:'screen2'
    FloatLayout:
        canvas.before:
            Rectangle:
                pos:self.pos
                size: self.size
                source:'image1.jpg'
        Label:
            text:'Please insert your name'
            #text:'Please insert your Password'
            font_size: 40

        Button:
            text: 'Next'
            pos: 0,1
            font_size:20
            size_hint:0.1,0.05
            on_press:root.manager.current='screen1'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM