How can I enable scrolldown functionality when needed?
up vote
2
down vote
favorite
I'm building an application with Kivy that will have a bunch of drop down items. When I make an accordion bigger than the screen I get, "Not Enough Space to Display All Children." Since, I have too many children to display on one page and don't want to display all of them at once anyway; how do i tell the program to not worry about it and just enable a scrolldown functionality? For the life of me I cannot find any examples on the internet where large accordions have an added scrolling function. All the solutions I have found on the internet simply say "Make more space".
The code below creates 30 accordion items that do not fit on the screen and produces the error. Thank you in advance and if you require any more clarification I will be happy to provide it.
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
class AccordionApp(App):
def build(self):
root = Accordion(orientation='vertical')
for x in range(30):
item = AccordionItem(title='Title %d' % x)
item.add_widget(Label(text='Very big contentn' * 10))
root.add_widget(item)
return root
if __name__ == '__main__':
AccordionApp().run()
python python-3.x kivy
add a comment |
up vote
2
down vote
favorite
I'm building an application with Kivy that will have a bunch of drop down items. When I make an accordion bigger than the screen I get, "Not Enough Space to Display All Children." Since, I have too many children to display on one page and don't want to display all of them at once anyway; how do i tell the program to not worry about it and just enable a scrolldown functionality? For the life of me I cannot find any examples on the internet where large accordions have an added scrolling function. All the solutions I have found on the internet simply say "Make more space".
The code below creates 30 accordion items that do not fit on the screen and produces the error. Thank you in advance and if you require any more clarification I will be happy to provide it.
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
class AccordionApp(App):
def build(self):
root = Accordion(orientation='vertical')
for x in range(30):
item = AccordionItem(title='Title %d' % x)
item.add_widget(Label(text='Very big contentn' * 10))
root.add_widget(item)
return root
if __name__ == '__main__':
AccordionApp().run()
python python-3.x kivy
I think it's a bug, I recommend reporting it
– eyllanesc
Nov 19 at 21:43
I doubt that reporting it as a bug will help, since it is acting exactly as documented. Perhaps a feature request suggesting that theAccordion
container be placed in aScrollView
.
– John Anderson
Nov 20 at 2:18
@JohnAnderson Given that Accordion doesn't appear to allow that functionality, do you have any recommendations of a python GUI that would allow something similar to be programmed? Or would it be best to go outside of Python and learn HTML/CSS/JAVASCRIPT for more control.
– Whip
Nov 20 at 17:29
add a comment |
up vote
2
down vote
favorite
up vote
2
down vote
favorite
I'm building an application with Kivy that will have a bunch of drop down items. When I make an accordion bigger than the screen I get, "Not Enough Space to Display All Children." Since, I have too many children to display on one page and don't want to display all of them at once anyway; how do i tell the program to not worry about it and just enable a scrolldown functionality? For the life of me I cannot find any examples on the internet where large accordions have an added scrolling function. All the solutions I have found on the internet simply say "Make more space".
The code below creates 30 accordion items that do not fit on the screen and produces the error. Thank you in advance and if you require any more clarification I will be happy to provide it.
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
class AccordionApp(App):
def build(self):
root = Accordion(orientation='vertical')
for x in range(30):
item = AccordionItem(title='Title %d' % x)
item.add_widget(Label(text='Very big contentn' * 10))
root.add_widget(item)
return root
if __name__ == '__main__':
AccordionApp().run()
python python-3.x kivy
I'm building an application with Kivy that will have a bunch of drop down items. When I make an accordion bigger than the screen I get, "Not Enough Space to Display All Children." Since, I have too many children to display on one page and don't want to display all of them at once anyway; how do i tell the program to not worry about it and just enable a scrolldown functionality? For the life of me I cannot find any examples on the internet where large accordions have an added scrolling function. All the solutions I have found on the internet simply say "Make more space".
The code below creates 30 accordion items that do not fit on the screen and produces the error. Thank you in advance and if you require any more clarification I will be happy to provide it.
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
class AccordionApp(App):
def build(self):
root = Accordion(orientation='vertical')
for x in range(30):
item = AccordionItem(title='Title %d' % x)
item.add_widget(Label(text='Very big contentn' * 10))
root.add_widget(item)
return root
if __name__ == '__main__':
AccordionApp().run()
python python-3.x kivy
python python-3.x kivy
edited Nov 19 at 21:27
eyllanesc
69.8k93052
69.8k93052
asked Nov 19 at 21:12
Whip
4917
4917
I think it's a bug, I recommend reporting it
– eyllanesc
Nov 19 at 21:43
I doubt that reporting it as a bug will help, since it is acting exactly as documented. Perhaps a feature request suggesting that theAccordion
container be placed in aScrollView
.
– John Anderson
Nov 20 at 2:18
@JohnAnderson Given that Accordion doesn't appear to allow that functionality, do you have any recommendations of a python GUI that would allow something similar to be programmed? Or would it be best to go outside of Python and learn HTML/CSS/JAVASCRIPT for more control.
– Whip
Nov 20 at 17:29
add a comment |
I think it's a bug, I recommend reporting it
– eyllanesc
Nov 19 at 21:43
I doubt that reporting it as a bug will help, since it is acting exactly as documented. Perhaps a feature request suggesting that theAccordion
container be placed in aScrollView
.
– John Anderson
Nov 20 at 2:18
@JohnAnderson Given that Accordion doesn't appear to allow that functionality, do you have any recommendations of a python GUI that would allow something similar to be programmed? Or would it be best to go outside of Python and learn HTML/CSS/JAVASCRIPT for more control.
– Whip
Nov 20 at 17:29
I think it's a bug, I recommend reporting it
– eyllanesc
Nov 19 at 21:43
I think it's a bug, I recommend reporting it
– eyllanesc
Nov 19 at 21:43
I doubt that reporting it as a bug will help, since it is acting exactly as documented. Perhaps a feature request suggesting that the
Accordion
container be placed in a ScrollView
.– John Anderson
Nov 20 at 2:18
I doubt that reporting it as a bug will help, since it is acting exactly as documented. Perhaps a feature request suggesting that the
Accordion
container be placed in a ScrollView
.– John Anderson
Nov 20 at 2:18
@JohnAnderson Given that Accordion doesn't appear to allow that functionality, do you have any recommendations of a python GUI that would allow something similar to be programmed? Or would it be best to go outside of Python and learn HTML/CSS/JAVASCRIPT for more control.
– Whip
Nov 20 at 17:29
@JohnAnderson Given that Accordion doesn't appear to allow that functionality, do you have any recommendations of a python GUI that would allow something similar to be programmed? Or would it be best to go outside of Python and learn HTML/CSS/JAVASCRIPT for more control.
– Whip
Nov 20 at 17:29
add a comment |
1 Answer
1
active
oldest
votes
up vote
3
down vote
accepted
You can adjust the size of the Accordion
, if you can calculate the size needed, and put the Accordion
in a ScrollView
. For example:
from kivy.core.window import Window
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.scrollview import ScrollView
class AccordionApp(App):
def build(self):
root = ScrollView(size_hint=(None, 1), size=(Window.width, Window.height))
acc = Accordion(size_hint_x=None)
width_calc = 200 # guess at width needed for one open item content
root.add_widget(acc)
for x in range(30):
item = AccordionItem(title='Title %d' % x)
item.add_widget(Label(text='Very big contentn' * 10))
acc.add_widget(item)
width_calc += item.min_space # add minimum width for an item
acc.width = width_calc # set Accordion width
return root
if __name__ == '__main__':
AccordionApp().run()
Thanks John! This is exactly what I was looking for. As a side question (maybe I should make a new Stack Overflow question for this), in fullscreen mode the scrollview doesn't appear to take up the entire window width. Is this due to the program still working off the non fullscreen 'window.width' variable? Is there a way to make this variable dynamic in the event I resize the frame?
– Whip
Nov 21 at 0:20
I think if you just change theScrollView
creation line toroot = ScrollView()
, theScrollView
should fill the entire screen.
– John Anderson
Nov 21 at 3:28
Great! Thank you very much for your help John.
– Whip
Nov 21 at 3:52
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
accepted
You can adjust the size of the Accordion
, if you can calculate the size needed, and put the Accordion
in a ScrollView
. For example:
from kivy.core.window import Window
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.scrollview import ScrollView
class AccordionApp(App):
def build(self):
root = ScrollView(size_hint=(None, 1), size=(Window.width, Window.height))
acc = Accordion(size_hint_x=None)
width_calc = 200 # guess at width needed for one open item content
root.add_widget(acc)
for x in range(30):
item = AccordionItem(title='Title %d' % x)
item.add_widget(Label(text='Very big contentn' * 10))
acc.add_widget(item)
width_calc += item.min_space # add minimum width for an item
acc.width = width_calc # set Accordion width
return root
if __name__ == '__main__':
AccordionApp().run()
Thanks John! This is exactly what I was looking for. As a side question (maybe I should make a new Stack Overflow question for this), in fullscreen mode the scrollview doesn't appear to take up the entire window width. Is this due to the program still working off the non fullscreen 'window.width' variable? Is there a way to make this variable dynamic in the event I resize the frame?
– Whip
Nov 21 at 0:20
I think if you just change theScrollView
creation line toroot = ScrollView()
, theScrollView
should fill the entire screen.
– John Anderson
Nov 21 at 3:28
Great! Thank you very much for your help John.
– Whip
Nov 21 at 3:52
add a comment |
up vote
3
down vote
accepted
You can adjust the size of the Accordion
, if you can calculate the size needed, and put the Accordion
in a ScrollView
. For example:
from kivy.core.window import Window
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.scrollview import ScrollView
class AccordionApp(App):
def build(self):
root = ScrollView(size_hint=(None, 1), size=(Window.width, Window.height))
acc = Accordion(size_hint_x=None)
width_calc = 200 # guess at width needed for one open item content
root.add_widget(acc)
for x in range(30):
item = AccordionItem(title='Title %d' % x)
item.add_widget(Label(text='Very big contentn' * 10))
acc.add_widget(item)
width_calc += item.min_space # add minimum width for an item
acc.width = width_calc # set Accordion width
return root
if __name__ == '__main__':
AccordionApp().run()
Thanks John! This is exactly what I was looking for. As a side question (maybe I should make a new Stack Overflow question for this), in fullscreen mode the scrollview doesn't appear to take up the entire window width. Is this due to the program still working off the non fullscreen 'window.width' variable? Is there a way to make this variable dynamic in the event I resize the frame?
– Whip
Nov 21 at 0:20
I think if you just change theScrollView
creation line toroot = ScrollView()
, theScrollView
should fill the entire screen.
– John Anderson
Nov 21 at 3:28
Great! Thank you very much for your help John.
– Whip
Nov 21 at 3:52
add a comment |
up vote
3
down vote
accepted
up vote
3
down vote
accepted
You can adjust the size of the Accordion
, if you can calculate the size needed, and put the Accordion
in a ScrollView
. For example:
from kivy.core.window import Window
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.scrollview import ScrollView
class AccordionApp(App):
def build(self):
root = ScrollView(size_hint=(None, 1), size=(Window.width, Window.height))
acc = Accordion(size_hint_x=None)
width_calc = 200 # guess at width needed for one open item content
root.add_widget(acc)
for x in range(30):
item = AccordionItem(title='Title %d' % x)
item.add_widget(Label(text='Very big contentn' * 10))
acc.add_widget(item)
width_calc += item.min_space # add minimum width for an item
acc.width = width_calc # set Accordion width
return root
if __name__ == '__main__':
AccordionApp().run()
You can adjust the size of the Accordion
, if you can calculate the size needed, and put the Accordion
in a ScrollView
. For example:
from kivy.core.window import Window
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.scrollview import ScrollView
class AccordionApp(App):
def build(self):
root = ScrollView(size_hint=(None, 1), size=(Window.width, Window.height))
acc = Accordion(size_hint_x=None)
width_calc = 200 # guess at width needed for one open item content
root.add_widget(acc)
for x in range(30):
item = AccordionItem(title='Title %d' % x)
item.add_widget(Label(text='Very big contentn' * 10))
acc.add_widget(item)
width_calc += item.min_space # add minimum width for an item
acc.width = width_calc # set Accordion width
return root
if __name__ == '__main__':
AccordionApp().run()
answered Nov 20 at 23:43
John Anderson
2,0881312
2,0881312
Thanks John! This is exactly what I was looking for. As a side question (maybe I should make a new Stack Overflow question for this), in fullscreen mode the scrollview doesn't appear to take up the entire window width. Is this due to the program still working off the non fullscreen 'window.width' variable? Is there a way to make this variable dynamic in the event I resize the frame?
– Whip
Nov 21 at 0:20
I think if you just change theScrollView
creation line toroot = ScrollView()
, theScrollView
should fill the entire screen.
– John Anderson
Nov 21 at 3:28
Great! Thank you very much for your help John.
– Whip
Nov 21 at 3:52
add a comment |
Thanks John! This is exactly what I was looking for. As a side question (maybe I should make a new Stack Overflow question for this), in fullscreen mode the scrollview doesn't appear to take up the entire window width. Is this due to the program still working off the non fullscreen 'window.width' variable? Is there a way to make this variable dynamic in the event I resize the frame?
– Whip
Nov 21 at 0:20
I think if you just change theScrollView
creation line toroot = ScrollView()
, theScrollView
should fill the entire screen.
– John Anderson
Nov 21 at 3:28
Great! Thank you very much for your help John.
– Whip
Nov 21 at 3:52
Thanks John! This is exactly what I was looking for. As a side question (maybe I should make a new Stack Overflow question for this), in fullscreen mode the scrollview doesn't appear to take up the entire window width. Is this due to the program still working off the non fullscreen 'window.width' variable? Is there a way to make this variable dynamic in the event I resize the frame?
– Whip
Nov 21 at 0:20
Thanks John! This is exactly what I was looking for. As a side question (maybe I should make a new Stack Overflow question for this), in fullscreen mode the scrollview doesn't appear to take up the entire window width. Is this due to the program still working off the non fullscreen 'window.width' variable? Is there a way to make this variable dynamic in the event I resize the frame?
– Whip
Nov 21 at 0:20
I think if you just change the
ScrollView
creation line to root = ScrollView()
, the ScrollView
should fill the entire screen.– John Anderson
Nov 21 at 3:28
I think if you just change the
ScrollView
creation line to root = ScrollView()
, the ScrollView
should fill the entire screen.– John Anderson
Nov 21 at 3:28
Great! Thank you very much for your help John.
– Whip
Nov 21 at 3:52
Great! Thank you very much for your help John.
– Whip
Nov 21 at 3:52
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53382711%2fhow-can-i-enable-scrolldown-functionality-when-needed%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I think it's a bug, I recommend reporting it
– eyllanesc
Nov 19 at 21:43
I doubt that reporting it as a bug will help, since it is acting exactly as documented. Perhaps a feature request suggesting that the
Accordion
container be placed in aScrollView
.– John Anderson
Nov 20 at 2:18
@JohnAnderson Given that Accordion doesn't appear to allow that functionality, do you have any recommendations of a python GUI that would allow something similar to be programmed? Or would it be best to go outside of Python and learn HTML/CSS/JAVASCRIPT for more control.
– Whip
Nov 20 at 17:29