更新 Toga、Beeware 中的 MainWindow,Python
Update MainWindow in Toga, Beeware, Python
我正在尝试使用 Beeware 创建一个跨平台应用程序,一开始我展示了两个按钮供用户选择他想去的视图,所以一旦单击按钮主 window 应更新其内容并显示用户选择的视图。
这是应用启动时的主要window:
单击“第一视图”后,第一视图的内容将添加到开始内容后面,如下所示:
预期的行为主要是window删除按钮并仅显示文本,第二个视图按钮也应如此。
这是代码:
import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW
class exampleApp(toga.App):
def startup(self):
"""
Construct and show the Toga application.
Usually, you would add your application to a main content box.
We then create a main window (with a name matching the app), and
show the main window.
"""
main_box = toga.Box(style=Pack(direction=COLUMN))
###
# Main Screen
first_view = toga.Button('First View', on_press=self.first_view, style=Pack(padding=2))
second_view = toga.Button('Second View', on_press=self.second_view, style=Pack(padding=2))
home_box = toga.Box(style=Pack(direction=ROW, padding=2))
home_box.add(first_view)
home_box.add(second_view)
main_box.add(home_box)
###
self.main_window = toga.MainWindow(title=self.formal_name)
self.main_window.content = main_box
self.main_window.show()
def first_view(self, widget):
new_box = toga.Box()
screen_text = toga.Label('This screen will allow you to see your First View')
new_box.add(screen_text)
self.main_window.content = new_box
def second_view(self, widget):
new_box = toga.Box()
screen_text = toga.Label('This screen will allow you to see your Second View')
new_box.add(screen_text)
self.main_window.content = new_box
def main():
return exampleApp()
有人知道如何获得预期的输出吗?
提前致谢。
已修复。
我的理解是我们必须创建一个我们可以玩的通用盒子(self.main_box),这个盒子有一个通用的children(self.view_box),即我们可以删除和重置常规内容的方法 children 每次修改内容时,MainWindow 默认会自行刷新,因此每次修改内容时都不需要 self.main_window.content = self.main_box
。
import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW
class exampleApp(toga.App):
def startup(self):
"""
Construct and show the Toga application.
Usually, you would add your application to a main content box.
We then create a main window (with a name matching the app), and
show the main window.
"""
self.main_box = toga.Box(style=Pack(direction=COLUMN))
self.view_box = toga.Box()
###
# Main Screen
first_view = toga.Button('First View', on_press=self.first_view, style=Pack(padding=2))
second_view = toga.Button('Second View', on_press=self.second_view, style=Pack(padding=2))
self.view_box.style = Pack(direction=ROW, padding=2)
self.view_box.add(first_view)
self.view_box.add(second_view)
###
self.main_box.add(self.view_box)
self.main_window = toga.MainWindow(title=self.formal_name)
self.main_window.content = self.main_box
self.main_window.show()
def first_view(self, sender):
self.main_box.remove(self.view_box)
self.view_box = toga.Box()
self.view_box.style = Pack(direction=ROW, padding=2)
screen_text = toga.Label('This screen will allow you to see your First View')
self.view_box.add(screen_text)
self.main_box.add(self.view_box)
self.main_window.show()
def second_view(self, widget):
self.main_box.remove(self.view_box)
self.view_box = toga.Box()
self.view_box.style = Pack(direction=ROW, padding=2)
screen_text = toga.Label('This screen will allow you to see your Second View')
self.view_box.add(screen_text)
self.main_box.add(self.view_box)
self.main_window.show()
def main():
return exampleApp()
我正在尝试使用 Beeware 创建一个跨平台应用程序,一开始我展示了两个按钮供用户选择他想去的视图,所以一旦单击按钮主 window 应更新其内容并显示用户选择的视图。
这是应用启动时的主要window:
单击“第一视图”后,第一视图的内容将添加到开始内容后面,如下所示:
预期的行为主要是window删除按钮并仅显示文本,第二个视图按钮也应如此。
这是代码:
import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW
class exampleApp(toga.App):
def startup(self):
"""
Construct and show the Toga application.
Usually, you would add your application to a main content box.
We then create a main window (with a name matching the app), and
show the main window.
"""
main_box = toga.Box(style=Pack(direction=COLUMN))
###
# Main Screen
first_view = toga.Button('First View', on_press=self.first_view, style=Pack(padding=2))
second_view = toga.Button('Second View', on_press=self.second_view, style=Pack(padding=2))
home_box = toga.Box(style=Pack(direction=ROW, padding=2))
home_box.add(first_view)
home_box.add(second_view)
main_box.add(home_box)
###
self.main_window = toga.MainWindow(title=self.formal_name)
self.main_window.content = main_box
self.main_window.show()
def first_view(self, widget):
new_box = toga.Box()
screen_text = toga.Label('This screen will allow you to see your First View')
new_box.add(screen_text)
self.main_window.content = new_box
def second_view(self, widget):
new_box = toga.Box()
screen_text = toga.Label('This screen will allow you to see your Second View')
new_box.add(screen_text)
self.main_window.content = new_box
def main():
return exampleApp()
有人知道如何获得预期的输出吗?
提前致谢。
已修复。
我的理解是我们必须创建一个我们可以玩的通用盒子(self.main_box),这个盒子有一个通用的children(self.view_box),即我们可以删除和重置常规内容的方法 children 每次修改内容时,MainWindow 默认会自行刷新,因此每次修改内容时都不需要 self.main_window.content = self.main_box
。
import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW
class exampleApp(toga.App):
def startup(self):
"""
Construct and show the Toga application.
Usually, you would add your application to a main content box.
We then create a main window (with a name matching the app), and
show the main window.
"""
self.main_box = toga.Box(style=Pack(direction=COLUMN))
self.view_box = toga.Box()
###
# Main Screen
first_view = toga.Button('First View', on_press=self.first_view, style=Pack(padding=2))
second_view = toga.Button('Second View', on_press=self.second_view, style=Pack(padding=2))
self.view_box.style = Pack(direction=ROW, padding=2)
self.view_box.add(first_view)
self.view_box.add(second_view)
###
self.main_box.add(self.view_box)
self.main_window = toga.MainWindow(title=self.formal_name)
self.main_window.content = self.main_box
self.main_window.show()
def first_view(self, sender):
self.main_box.remove(self.view_box)
self.view_box = toga.Box()
self.view_box.style = Pack(direction=ROW, padding=2)
screen_text = toga.Label('This screen will allow you to see your First View')
self.view_box.add(screen_text)
self.main_box.add(self.view_box)
self.main_window.show()
def second_view(self, widget):
self.main_box.remove(self.view_box)
self.view_box = toga.Box()
self.view_box.style = Pack(direction=ROW, padding=2)
screen_text = toga.Label('This screen will allow you to see your Second View')
self.view_box.add(screen_text)
self.main_box.add(self.view_box)
self.main_window.show()
def main():
return exampleApp()