【问题标题】:Changing size of two different kivy screens更改两个不同 kivy 屏幕的大小
【发布时间】:2017-07-22 23:04:00
【问题描述】:

我在 Kivy 程序中有两个屏幕。第一个代表登录屏幕,所以需要小一些,而另一个有数据,所以我需要让它全屏。

我尝试使用

from kivy.config import Config
Config.set('graphics', 'width', '350')
Config.set('graphics', 'height', '250')

但是,问题在于另一个屏幕的尺寸也减小了,如果你知道我需要做什么来为不同的屏幕设置不同的尺寸,请帮助我,谢谢。

【问题讨论】:

  • 不,不是,我在这里尝试更改两个不同窗口的大小,而不是单个窗口(上述问题的答案)

标签: python-3.x kivy fullscreen


【解决方案1】:

我今天早些时候回答了几乎相同的问题。像这样编写你的python代码:

from kivy.app import App
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.core.window import Window

class Screen_Manager(ScreenManager):
    pass

class Main(Screen):
    def __init__(self, **kwargs):
        super(Main, self).__init__(**kwargs)

    def on_pre_enter(self):
        Window.size = (900, 500)     

class Login(Screen):
    def __init__(self, **kwargs):
        super(Login, self).__init__(**kwargs)

    def on_pre_enter(self):
        Window.size = (400, 300)


class MultiScreenApp(App):
    def build(self):
        return Screen_Manager()

MultiScreenApp().run()

使用类似于这样的 multiscreen.kv 文件:

<Screen_Manager>:
    id: screen_manager
    Login:
    Main:

<Login>:
    name: 'login'
    Button:
        text: 'Go to Main'
        on_press: root.manager.current = 'main'

<Main>:
    name: 'main'
    Button:
        text: 'Go to Login'
        on_press: root.manager.current = 'login'

【讨论】:

    【解决方案2】:

    定义一个类似的方法

    from kivy.core.window import Window
    
    def update_window_size(width, height):
        # Validate width and height then
        Window.size = (width, height)
    

    并以所需的高度和宽度在任何你想要的地方调用它。

    ___ 编辑 1 - 添加示例。在Screen的初始化中更改屏幕大小

    from kivy.app import App
    from kivy.uix.screenmanager import Screen, ScreenManager
    from kivy.core.window import Window
    
    sm = ScreenManager()
    
    
    class Main(Screen):
        def __init__(self):
            super(Main, self).__init__()
    
    
    class Login(Screen):
        def __init__(self):
            super(Login, self).__init__()
            # Change login screen size in it's __init__
            update_window_size(250, 250)
    
    
    def update_window_size(width, height):
        # Validate width and height then
        Window.size = (width, height)
    
    
    class MyApp(App):
        def build(self):
            return sm
    
    MyApp().run()
    

    【讨论】:

    • 非常感谢,但我对 Kivy 还很陌生,能否请您举例说明一下,例如 O 有两个用于两个屏幕的类: 的类 LoginScreen(Screen): 和 的类 DataDisplayScreen(class) 我应该如何前进?谢谢
    • @Mahdi 我添加了一个带有两个屏幕的示例
    • 再次感谢您的努力,但我收到此错误:child = cls(__no_builder=True) TypeError: __init__() got an unexpected keyword argument '__no_builder'
    猜你喜欢
    • 2020-11-29
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2020-09-04
    相关资源
    最近更新 更多