How can I enable scrolldown functionality when needed?
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 |
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 '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 theAccordion
container be placed in aScrollView
.
– 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
add a comment |
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 '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 theAccordion
container be placed in aScrollView
.
– 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
add a comment |
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 theAccordion
container be placed in aScrollView
.
– 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
add a comment |
1 Answer
1
active
oldest
votes
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 '18 at 0:20
I think if you just change theScrollView
creation line toroot = ScrollView()
, theScrollView
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
add a comment |
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
});
}
});
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
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
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 '18 at 0:20
I think if you just change theScrollView
creation line toroot = ScrollView()
, theScrollView
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
add a comment |
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 '18 at 0:20
I think if you just change theScrollView
creation line toroot = ScrollView()
, theScrollView
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
add a comment |
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 '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 theScrollView
creation line toroot = ScrollView()
, theScrollView
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
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 '18 at 0:20
I think if you just change theScrollView
creation line toroot = ScrollView()
, theScrollView
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
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.
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 '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 aScrollView
.– 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