How can I enable scrolldown functionality when needed?












2















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 '18 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 '18 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 '18 at 17:29
















2















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 '18 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 '18 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 '18 at 17:29














2












2








2








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 '18 at 21:27









eyllanesc

77.8k103156




77.8k103156










asked Nov 19 '18 at 21:12









WhipWhip

4917




4917













  • I think it's a bug, I recommend reporting it

    – eyllanesc
    Nov 19 '18 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 '18 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 '18 at 17:29



















  • I think it's a bug, I recommend reporting it

    – eyllanesc
    Nov 19 '18 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 '18 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 '18 at 17:29

















I think it's a bug, I recommend reporting it

– eyllanesc
Nov 19 '18 at 21:43





I think it's a bug, I recommend reporting it

– eyllanesc
Nov 19 '18 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 '18 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 '18 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 '18 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 '18 at 17:29












1 Answer
1






active

oldest

votes


















3














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 '18 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 '18 at 3:28











  • Great! Thank you very much for your help John.

    – Whip
    Nov 21 '18 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',
autoActivateHeartbeat: false,
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









3














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 '18 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 '18 at 3:28











  • Great! Thank you very much for your help John.

    – Whip
    Nov 21 '18 at 3:52
















3














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 '18 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 '18 at 3:28











  • Great! Thank you very much for your help John.

    – Whip
    Nov 21 '18 at 3:52














3












3








3







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 '18 at 23:43









John AndersonJohn Anderson

3,2451515




3,2451515













  • 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 '18 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 '18 at 3:28











  • Great! Thank you very much for your help John.

    – Whip
    Nov 21 '18 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 '18 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 '18 at 3:28











  • Great! Thank you very much for your help John.

    – Whip
    Nov 21 '18 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 '18 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 '18 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 '18 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 '18 at 3:28













Great! Thank you very much for your help John.

– Whip
Nov 21 '18 at 3:52





Great! Thank you very much for your help John.

– Whip
Nov 21 '18 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.




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

Guess what letter conforming each word

Port of Spain

Run scheduled task as local user group (not BUILTIN)