Kivy: FunctionMethod not working from another class
I made two buttons that have the same path to a function. Only one of the buttons works though. Both button should change the lines in the circle.
I've read on other post that I might need to 'link' the two classes together so that they can 'talk'. If anyone has any insight, please advise me!
Also, why does the print function work on both buttons but not the rest of the function?
Py:
from kivy.app import App
from kivy.properties import ListProperty
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
class Screen1(Screen):
pass
class SM(ScreenManager):
pass
class ButtonX(Button):
def increaseX(self):
TestApp().increase()
class TestApp(App):
random_num_list = ListProperty([20, 40, 80])
def increase(self):
print(str(self.random_num_list))
self.random_num_list = [90, 140, 220]
def build(self):
global sm
sm = SM()
return sm
if __name__ == '__main__':
TestApp().run()
Kv:
<Screen1>:
FloatLayout:
Button:
pos_hint: {'center_x': .5, 'center_y': .5}
canvas:
Color:
rgba: 1,1,1,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, 0, app.random_num_list[0]
Color:
rgba: .8,.1,.8,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[0], app.random_num_list[1]
Color:
rgba: .6,.6,1,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[1], app.random_num_list[2]
Color:
rgba: 1,.1,.4,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[2], 360
ButtonX:
pos_hint: {'center_x': .5, 'center_y': .55}
size_hint: .2, .1
text: 'Try first:ndoesn't works'
on_press: self.increaseX()
ButtonX:
pos_hint: {'center_x': .5, 'center_y': .45}
size_hint: .2, .1
text: 'Try second:nworks'
on_press: app.increase()
<SM>:
Screen1:
python kivy
add a comment |
I made two buttons that have the same path to a function. Only one of the buttons works though. Both button should change the lines in the circle.
I've read on other post that I might need to 'link' the two classes together so that they can 'talk'. If anyone has any insight, please advise me!
Also, why does the print function work on both buttons but not the rest of the function?
Py:
from kivy.app import App
from kivy.properties import ListProperty
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
class Screen1(Screen):
pass
class SM(ScreenManager):
pass
class ButtonX(Button):
def increaseX(self):
TestApp().increase()
class TestApp(App):
random_num_list = ListProperty([20, 40, 80])
def increase(self):
print(str(self.random_num_list))
self.random_num_list = [90, 140, 220]
def build(self):
global sm
sm = SM()
return sm
if __name__ == '__main__':
TestApp().run()
Kv:
<Screen1>:
FloatLayout:
Button:
pos_hint: {'center_x': .5, 'center_y': .5}
canvas:
Color:
rgba: 1,1,1,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, 0, app.random_num_list[0]
Color:
rgba: .8,.1,.8,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[0], app.random_num_list[1]
Color:
rgba: .6,.6,1,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[1], app.random_num_list[2]
Color:
rgba: 1,.1,.4,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[2], 360
ButtonX:
pos_hint: {'center_x': .5, 'center_y': .55}
size_hint: .2, .1
text: 'Try first:ndoesn't works'
on_press: self.increaseX()
ButtonX:
pos_hint: {'center_x': .5, 'center_y': .45}
size_hint: .2, .1
text: 'Try second:nworks'
on_press: app.increase()
<SM>:
Screen1:
python kivy
add a comment |
I made two buttons that have the same path to a function. Only one of the buttons works though. Both button should change the lines in the circle.
I've read on other post that I might need to 'link' the two classes together so that they can 'talk'. If anyone has any insight, please advise me!
Also, why does the print function work on both buttons but not the rest of the function?
Py:
from kivy.app import App
from kivy.properties import ListProperty
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
class Screen1(Screen):
pass
class SM(ScreenManager):
pass
class ButtonX(Button):
def increaseX(self):
TestApp().increase()
class TestApp(App):
random_num_list = ListProperty([20, 40, 80])
def increase(self):
print(str(self.random_num_list))
self.random_num_list = [90, 140, 220]
def build(self):
global sm
sm = SM()
return sm
if __name__ == '__main__':
TestApp().run()
Kv:
<Screen1>:
FloatLayout:
Button:
pos_hint: {'center_x': .5, 'center_y': .5}
canvas:
Color:
rgba: 1,1,1,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, 0, app.random_num_list[0]
Color:
rgba: .8,.1,.8,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[0], app.random_num_list[1]
Color:
rgba: .6,.6,1,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[1], app.random_num_list[2]
Color:
rgba: 1,.1,.4,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[2], 360
ButtonX:
pos_hint: {'center_x': .5, 'center_y': .55}
size_hint: .2, .1
text: 'Try first:ndoesn't works'
on_press: self.increaseX()
ButtonX:
pos_hint: {'center_x': .5, 'center_y': .45}
size_hint: .2, .1
text: 'Try second:nworks'
on_press: app.increase()
<SM>:
Screen1:
python kivy
I made two buttons that have the same path to a function. Only one of the buttons works though. Both button should change the lines in the circle.
I've read on other post that I might need to 'link' the two classes together so that they can 'talk'. If anyone has any insight, please advise me!
Also, why does the print function work on both buttons but not the rest of the function?
Py:
from kivy.app import App
from kivy.properties import ListProperty
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
class Screen1(Screen):
pass
class SM(ScreenManager):
pass
class ButtonX(Button):
def increaseX(self):
TestApp().increase()
class TestApp(App):
random_num_list = ListProperty([20, 40, 80])
def increase(self):
print(str(self.random_num_list))
self.random_num_list = [90, 140, 220]
def build(self):
global sm
sm = SM()
return sm
if __name__ == '__main__':
TestApp().run()
Kv:
<Screen1>:
FloatLayout:
Button:
pos_hint: {'center_x': .5, 'center_y': .5}
canvas:
Color:
rgba: 1,1,1,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, 0, app.random_num_list[0]
Color:
rgba: .8,.1,.8,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[0], app.random_num_list[1]
Color:
rgba: .6,.6,1,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[1], app.random_num_list[2]
Color:
rgba: 1,.1,.4,1
Line:
width: 5
circle: self.center_x, self.center_y, min(self.width, self.height) / 4, app.random_num_list[2], 360
ButtonX:
pos_hint: {'center_x': .5, 'center_y': .55}
size_hint: .2, .1
text: 'Try first:ndoesn't works'
on_press: self.increaseX()
ButtonX:
pos_hint: {'center_x': .5, 'center_y': .45}
size_hint: .2, .1
text: 'Try second:nworks'
on_press: app.increase()
<SM>:
Screen1:
python kivy
python kivy
edited Nov 26 '18 at 5:14
eyllanesc
84.6k103562
84.6k103562
asked Nov 26 '18 at 4:53
Petar LuketinaPetar Luketina
739
739
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
To understand the problem I am going to modify the code:
# ...
class ButtonX(Button):
def increaseX(self):
t2 = TestApp()
print("t2", t2)
t2.increase()
# ...
if __name__ == '__main__':
t1 = TestApp()
print("t1", t1)
t1.run()
Getting the following:
...
t1 <__main__.TestApp object at 0x7f8e750c38d0>
...
t2 <__main__.TestApp object at 0x7f8e71246320>
...
And clearly it is seen that they are 2 different objects, therefore when calling increase() it will not generate any modification to the current application.
In the case of .kv is used to app that is an object that indicates the application that is running, and in equivalent in .py is App.get_running_app(), so the solution is to use this last element.
from kivy.app import App
from kivy.properties import ListProperty
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
class Screen1(Screen):
pass
class SM(ScreenManager):
pass
class ButtonX(Button):
def increaseX(self):
App.get_running_app().increase() # <---
class TestApp(App):
random_num_list = ListProperty([20, 40, 80])
def increase(self):
print(str(self.random_num_list))
self.random_num_list = [90, 140, 220]
def build(self):
sm = SM()
return sm
if __name__ == '__main__':
TestApp().run()
Finally, do not use global variables because they are a headache when debugging.
Thank you for the information! You've been invaluable, seriously! Is it a problem if I have only have on global variable? In my app, I usesm.current = 'screen_name'to change the screens. Should I switch toApp.get_running_app().ScreenManager = 'screen_name?
– Petar Luketina
Nov 26 '18 at 14:22
1
@PetarLuketina useApp.get_running_app().root.current = 'screen_name', read kivy.org/doc/stable/api-kivy.app.html#kivy.app.App.root
– eyllanesc
Nov 26 '18 at 18:59
I was doing updates on my application and noticed thatApp.get_running_app().some_function()doesn't work anymore. Do you know the reason? It worked fine last week when you helped me.
– Petar Luketina
Dec 2 '18 at 6:03
@PetarLuketina You say: I was doing updates on my application then I can intuit that you have modified something that breaks the application, and I do not want to speculate because there could be n reasons.
– eyllanesc
Dec 2 '18 at 6:05
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%2f53474958%2fkivy-function-method-not-working-from-another-class%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
To understand the problem I am going to modify the code:
# ...
class ButtonX(Button):
def increaseX(self):
t2 = TestApp()
print("t2", t2)
t2.increase()
# ...
if __name__ == '__main__':
t1 = TestApp()
print("t1", t1)
t1.run()
Getting the following:
...
t1 <__main__.TestApp object at 0x7f8e750c38d0>
...
t2 <__main__.TestApp object at 0x7f8e71246320>
...
And clearly it is seen that they are 2 different objects, therefore when calling increase() it will not generate any modification to the current application.
In the case of .kv is used to app that is an object that indicates the application that is running, and in equivalent in .py is App.get_running_app(), so the solution is to use this last element.
from kivy.app import App
from kivy.properties import ListProperty
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
class Screen1(Screen):
pass
class SM(ScreenManager):
pass
class ButtonX(Button):
def increaseX(self):
App.get_running_app().increase() # <---
class TestApp(App):
random_num_list = ListProperty([20, 40, 80])
def increase(self):
print(str(self.random_num_list))
self.random_num_list = [90, 140, 220]
def build(self):
sm = SM()
return sm
if __name__ == '__main__':
TestApp().run()
Finally, do not use global variables because they are a headache when debugging.
Thank you for the information! You've been invaluable, seriously! Is it a problem if I have only have on global variable? In my app, I usesm.current = 'screen_name'to change the screens. Should I switch toApp.get_running_app().ScreenManager = 'screen_name?
– Petar Luketina
Nov 26 '18 at 14:22
1
@PetarLuketina useApp.get_running_app().root.current = 'screen_name', read kivy.org/doc/stable/api-kivy.app.html#kivy.app.App.root
– eyllanesc
Nov 26 '18 at 18:59
I was doing updates on my application and noticed thatApp.get_running_app().some_function()doesn't work anymore. Do you know the reason? It worked fine last week when you helped me.
– Petar Luketina
Dec 2 '18 at 6:03
@PetarLuketina You say: I was doing updates on my application then I can intuit that you have modified something that breaks the application, and I do not want to speculate because there could be n reasons.
– eyllanesc
Dec 2 '18 at 6:05
add a comment |
To understand the problem I am going to modify the code:
# ...
class ButtonX(Button):
def increaseX(self):
t2 = TestApp()
print("t2", t2)
t2.increase()
# ...
if __name__ == '__main__':
t1 = TestApp()
print("t1", t1)
t1.run()
Getting the following:
...
t1 <__main__.TestApp object at 0x7f8e750c38d0>
...
t2 <__main__.TestApp object at 0x7f8e71246320>
...
And clearly it is seen that they are 2 different objects, therefore when calling increase() it will not generate any modification to the current application.
In the case of .kv is used to app that is an object that indicates the application that is running, and in equivalent in .py is App.get_running_app(), so the solution is to use this last element.
from kivy.app import App
from kivy.properties import ListProperty
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
class Screen1(Screen):
pass
class SM(ScreenManager):
pass
class ButtonX(Button):
def increaseX(self):
App.get_running_app().increase() # <---
class TestApp(App):
random_num_list = ListProperty([20, 40, 80])
def increase(self):
print(str(self.random_num_list))
self.random_num_list = [90, 140, 220]
def build(self):
sm = SM()
return sm
if __name__ == '__main__':
TestApp().run()
Finally, do not use global variables because they are a headache when debugging.
Thank you for the information! You've been invaluable, seriously! Is it a problem if I have only have on global variable? In my app, I usesm.current = 'screen_name'to change the screens. Should I switch toApp.get_running_app().ScreenManager = 'screen_name?
– Petar Luketina
Nov 26 '18 at 14:22
1
@PetarLuketina useApp.get_running_app().root.current = 'screen_name', read kivy.org/doc/stable/api-kivy.app.html#kivy.app.App.root
– eyllanesc
Nov 26 '18 at 18:59
I was doing updates on my application and noticed thatApp.get_running_app().some_function()doesn't work anymore. Do you know the reason? It worked fine last week when you helped me.
– Petar Luketina
Dec 2 '18 at 6:03
@PetarLuketina You say: I was doing updates on my application then I can intuit that you have modified something that breaks the application, and I do not want to speculate because there could be n reasons.
– eyllanesc
Dec 2 '18 at 6:05
add a comment |
To understand the problem I am going to modify the code:
# ...
class ButtonX(Button):
def increaseX(self):
t2 = TestApp()
print("t2", t2)
t2.increase()
# ...
if __name__ == '__main__':
t1 = TestApp()
print("t1", t1)
t1.run()
Getting the following:
...
t1 <__main__.TestApp object at 0x7f8e750c38d0>
...
t2 <__main__.TestApp object at 0x7f8e71246320>
...
And clearly it is seen that they are 2 different objects, therefore when calling increase() it will not generate any modification to the current application.
In the case of .kv is used to app that is an object that indicates the application that is running, and in equivalent in .py is App.get_running_app(), so the solution is to use this last element.
from kivy.app import App
from kivy.properties import ListProperty
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
class Screen1(Screen):
pass
class SM(ScreenManager):
pass
class ButtonX(Button):
def increaseX(self):
App.get_running_app().increase() # <---
class TestApp(App):
random_num_list = ListProperty([20, 40, 80])
def increase(self):
print(str(self.random_num_list))
self.random_num_list = [90, 140, 220]
def build(self):
sm = SM()
return sm
if __name__ == '__main__':
TestApp().run()
Finally, do not use global variables because they are a headache when debugging.
To understand the problem I am going to modify the code:
# ...
class ButtonX(Button):
def increaseX(self):
t2 = TestApp()
print("t2", t2)
t2.increase()
# ...
if __name__ == '__main__':
t1 = TestApp()
print("t1", t1)
t1.run()
Getting the following:
...
t1 <__main__.TestApp object at 0x7f8e750c38d0>
...
t2 <__main__.TestApp object at 0x7f8e71246320>
...
And clearly it is seen that they are 2 different objects, therefore when calling increase() it will not generate any modification to the current application.
In the case of .kv is used to app that is an object that indicates the application that is running, and in equivalent in .py is App.get_running_app(), so the solution is to use this last element.
from kivy.app import App
from kivy.properties import ListProperty
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
class Screen1(Screen):
pass
class SM(ScreenManager):
pass
class ButtonX(Button):
def increaseX(self):
App.get_running_app().increase() # <---
class TestApp(App):
random_num_list = ListProperty([20, 40, 80])
def increase(self):
print(str(self.random_num_list))
self.random_num_list = [90, 140, 220]
def build(self):
sm = SM()
return sm
if __name__ == '__main__':
TestApp().run()
Finally, do not use global variables because they are a headache when debugging.
answered Nov 26 '18 at 5:10
eyllanesceyllanesc
84.6k103562
84.6k103562
Thank you for the information! You've been invaluable, seriously! Is it a problem if I have only have on global variable? In my app, I usesm.current = 'screen_name'to change the screens. Should I switch toApp.get_running_app().ScreenManager = 'screen_name?
– Petar Luketina
Nov 26 '18 at 14:22
1
@PetarLuketina useApp.get_running_app().root.current = 'screen_name', read kivy.org/doc/stable/api-kivy.app.html#kivy.app.App.root
– eyllanesc
Nov 26 '18 at 18:59
I was doing updates on my application and noticed thatApp.get_running_app().some_function()doesn't work anymore. Do you know the reason? It worked fine last week when you helped me.
– Petar Luketina
Dec 2 '18 at 6:03
@PetarLuketina You say: I was doing updates on my application then I can intuit that you have modified something that breaks the application, and I do not want to speculate because there could be n reasons.
– eyllanesc
Dec 2 '18 at 6:05
add a comment |
Thank you for the information! You've been invaluable, seriously! Is it a problem if I have only have on global variable? In my app, I usesm.current = 'screen_name'to change the screens. Should I switch toApp.get_running_app().ScreenManager = 'screen_name?
– Petar Luketina
Nov 26 '18 at 14:22
1
@PetarLuketina useApp.get_running_app().root.current = 'screen_name', read kivy.org/doc/stable/api-kivy.app.html#kivy.app.App.root
– eyllanesc
Nov 26 '18 at 18:59
I was doing updates on my application and noticed thatApp.get_running_app().some_function()doesn't work anymore. Do you know the reason? It worked fine last week when you helped me.
– Petar Luketina
Dec 2 '18 at 6:03
@PetarLuketina You say: I was doing updates on my application then I can intuit that you have modified something that breaks the application, and I do not want to speculate because there could be n reasons.
– eyllanesc
Dec 2 '18 at 6:05
Thank you for the information! You've been invaluable, seriously! Is it a problem if I have only have on global variable? In my app, I use
sm.current = 'screen_name' to change the screens. Should I switch to App.get_running_app().ScreenManager = 'screen_name ?– Petar Luketina
Nov 26 '18 at 14:22
Thank you for the information! You've been invaluable, seriously! Is it a problem if I have only have on global variable? In my app, I use
sm.current = 'screen_name' to change the screens. Should I switch to App.get_running_app().ScreenManager = 'screen_name ?– Petar Luketina
Nov 26 '18 at 14:22
1
1
@PetarLuketina use
App.get_running_app().root.current = 'screen_name', read kivy.org/doc/stable/api-kivy.app.html#kivy.app.App.root– eyllanesc
Nov 26 '18 at 18:59
@PetarLuketina use
App.get_running_app().root.current = 'screen_name', read kivy.org/doc/stable/api-kivy.app.html#kivy.app.App.root– eyllanesc
Nov 26 '18 at 18:59
I was doing updates on my application and noticed that
App.get_running_app().some_function() doesn't work anymore. Do you know the reason? It worked fine last week when you helped me.– Petar Luketina
Dec 2 '18 at 6:03
I was doing updates on my application and noticed that
App.get_running_app().some_function() doesn't work anymore. Do you know the reason? It worked fine last week when you helped me.– Petar Luketina
Dec 2 '18 at 6:03
@PetarLuketina You say: I was doing updates on my application then I can intuit that you have modified something that breaks the application, and I do not want to speculate because there could be n reasons.
– eyllanesc
Dec 2 '18 at 6:05
@PetarLuketina You say: I was doing updates on my application then I can intuit that you have modified something that breaks the application, and I do not want to speculate because there could be n reasons.
– eyllanesc
Dec 2 '18 at 6:05
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%2f53474958%2fkivy-function-method-not-working-from-another-class%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