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()









share|improve this question
























  • 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










  • @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















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()









share|improve this question
























  • 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










  • @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













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()









share|improve this question















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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 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


















  • 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










  • @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












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()





share|improve this answer





















  • 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










  • Great! Thank you very much for your help John.
    – Whip
    Nov 21 at 3:52











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















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

























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()





share|improve this answer





















  • 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










  • Great! Thank you very much for your help John.
    – Whip
    Nov 21 at 3:52















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()





share|improve this answer





















  • 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










  • Great! Thank you very much for your help John.
    – Whip
    Nov 21 at 3:52













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()





share|improve this answer












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()






share|improve this answer












share|improve this answer



share|improve this answer










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 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


















  • 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










  • 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


















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

404 Error Contact Form 7 ajax form submitting

How to know if a Active Directory user can login interactively

Refactoring coordinates for Minecraft Pi buildings written in Python