Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
Change the View (without NavigationBar)
-
Heyy!!
I got two pyui Files: intro.pyui and mail.pyui, if i start the code only intro.pyui is shown on the screen, now i added a button called "Open Mail", now i want to hide "intro.pyui" and open "mail.pyui".But how?
Thx -
@NRWTV2 , I tried several things to remove the first view. I didn't work it out.
But here is something. Maybe it still works for you.# coding: utf-8 import ui def button_action(sender): sender.superview.hidden = True sender.v2.present('sheet', animated = False) f = (0,0,500,500) v1 = ui.View(frame = f, bg_color = 'white') btn = ui.Button(frame = (10,10,150,32), title = 'hit me') btn.border_width = .5 btn.corner_radius = 3 btn.action = button_action v1.add_subview(btn) v2 = ui.View(frame = f) v2.bg_color = 'pink' btn.v2 = v2 # not a attr of ui.Button, is being dynamically created v1.present('sheet')```
-
Add the second as a subview to the first, and it'll be on top of everything.
-
@Webmaster4o , but to remove the first view presented
-
Have one view. Present it. Add pyui file A as a subview. Then remove pyui file A, and add B.
-
@Webmaster4o , ok. But have you tried it? I tried with ui.Views. Not easy to get rid of that pesky first view
-
@Phuket2 a minimal example:
import ui container = ui.View() a=ui.load_view('intro.pyui') b=ui.load_view('mail.pyui') def switch_to_mail(): container.remove_subview(a) container.add_subview(b) container.add_subview(a) container.present(hide_title_bar=1) ui.delay(switch_to_mail,1)
-
@Webmaster4o
Thanks, i will try it later! -
@Webmaster4o , oh ok. See what you mean now
-
Try this:
def openMail(sender): global View View.close() View.wait_modal() #VERY IMPORTANT, waits for view to close completely View = ui.loadview('mail.pyui') View.present('sheet') View = ui.loadview('intro.pyui') mail_button = ui.ButtonItem(action=openMail, title = 'Open Mail') View.right_button_items =[mail_button] View.present('sheet')
-
@jbap It's better to switch them inside a container. That means that there is always a window, it is never dismissed. With your solution, the user waits for the UI to close and reopen.