James_L
James_L

Reputation: 1225

Importing ScrollView module disables fullscreen mode in kivy

Including the line, from kivy.uix.scrollview import ScrollView nullifies the effect of Config.set('graphics', 'fullscreen', '1'), such that when ScrollView is imported, the application becomes windowed rather than full-screen. How can I full-screen my application while utilizing ScrollView? Thank you.

Upvotes: 0

Views: 447

Answers (1)

Nykakin
Nykakin

Reputation: 8747

It seems you need define your configuration first. Compare:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import kivy
kivy.require('1.7.1')

from kivy.config import Config
Config.set('graphics', 'fullscreen', 'auto')

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView 

class ImageApp(App):
    def build(self):
        layout = BoxLayout()
        button = Button(text="Exit", size_hint=(None, None))
        layout.add_widget(button)
        button.bind(on_press=exit)
        return layout

if __name__ == '__main__':
    ImageApp().run()

With:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import kivy
kivy.require('1.7.1')

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView 

from kivy.config import Config
Config.set('graphics', 'fullscreen', 'auto')

class ImageApp(App):
    def build(self):
        layout = BoxLayout()
        button = Button(text="Exit", size_hint=(None, None))
        layout.add_widget(button)
        button.bind(on_press=exit)
        return layout

if __name__ == '__main__':
    ImageApp().run()

UPDATE

Let's try to look at this behaviour. In the ScrollView module there is a kivy.metrics.sp used for calculating scrolling distance. So actually this code won't get us full screen either:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import kivy
kivy.require('1.7.1')

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button

from kivy.metrics import sp
val = sp(1)

from kivy.config import Config
Config.set('graphics', 'fullscreen', 'auto')

class ImageApp(App):
    def build(self):
        layout = BoxLayout()
        button = Button(text="Exit", size_hint=(None, None))
        layout.add_widget(button)
        button.bind(on_press=exit)
        return layout

if __name__ == '__main__':
    ImageApp().run()

kivy.metrics.sp have following definition:

from kivy.properties import dpi2px
def sp(value):
    return dpi2px(value, 'sp')

It's calling kivy.properties.dpi2px which, as name suggests, converting dpi to pixels, so it need to have screen dpi calculated. Looks like the culprit is here.

Upvotes: 3

Related Questions