首页 > 解决方案 > Kivy 将图像作为按钮添加到另一个页面

问题描述

我有一个应用程序,将来会是一个纸牌游戏计数器,但现在它离那个阶段还很远,无论如何,我有 3 个文件,main.py,screens.kv,screens2.kv(其中没有任何内容它)现在我也得到了一张图片,它是一个按钮,每次按下它时,为了测试它会写下“按下”,我已经在这个上面至少有 2 个小时了,无法弄清楚如何让按钮出现我按下“开始 Pasmar”(Pasmar 是未来游戏的名称),在我按下按钮后它显示的只是一个空白屏幕,但我确实更换了它们,它只显示按钮,没有别的。

这是我当前的代码:

#-*- coding: utf-8 -*-

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
from kivy.properties import ObjectProperty
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.tabbedpanel import TabbedPanelHeader
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
from functools import partial
from kivy.base import runTouchApp
from kivy.uix.image import Image
from kivy.uix.widget import Widget
from kivy.uix.popup import Popup
import sys
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image
from kivy.uix.behaviors import ButtonBehavior 
from kivy.lang import Builder
from kivy.base import runTouchApp
import random
import time
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
from kivy.properties import ObjectProperty, NumericProperty

import time
import threading



class ScreensApp(App):  
    def build(self):  
        return RootWidget()


class ScreenOne(Screen):
    pass


class ScreenTwo(Screen):

    def __init__(self, **kwargs):
        super(ScreenTwo, self).__init__(**kwargs)


class RootWidget(FloatLayout):
    pass

class ImageButton(ButtonBehavior, Image):  
    def on_press(self):
        print ('pressed')


    def displayScreenThenLeave(self):
        self.changeScreen()

    def changeScreen(self):
        if self.manager.current == 'screen1':
            self.manager.current = 'screen2'
        else:
            self.manager.current = 'screen1'


class Manager(ScreenManager):

    screen_one = ObjectProperty(None)
    screen_two = ObjectProperty(None)


class ScreensApp(App):

    def build(self):
        m = Manager(transition=NoTransition())
        return m

if __name__ == "__main__":
    ScreensApp().run()
class The_AssignmentApp(App):  
    def build(self):  
        return RootWidget()
if __name__ == "__main__":
    The_AssignmentApp().run()

这是kv文件:

#:kivy 1.10.1

<ScreenOne>:

    BoxLayout:
        orientation: "vertical"
        size: root.size
        spacing: 15                
        padding: 200


        Label:
            font_size: 34
            text: "Pasmar"
        Button:
            background_color: 0, 255, 0, .255
            text: "Start Pasmar"
            on_release: root.manager.current = "screen2"

<ScreenTwo>:        

    BoxLayout:
        orientation: "vertical"
        size: root.size
        spacing: 20
        padding: 20


<Manager>:
    id: screen_manager

    screen_one: screen_one
    screen_two: screen_two

    ScreenOne:
        id: screen_one
        name: "screen1"
        manager: screen_manager

    ScreenTwo:
        id: screen_two
        name: "screen2"
        manager: screen_manager

标签: pythonpython-3.xkivy

解决方案


推荐阅读