如何使用按钮切换AppJar中的窗口?
嘿,我刚好在AppJar框架里折腾过窗口切换的需求,给你整理了两种实用的实现方式,附上代码和详细解释,一看就懂!
方法1:通过显隐控制切换窗口
这种方式适合你需要手动控制窗口显示/隐藏状态的场景,核心用到app.showSubWindow()和app.hideSubWindow()两个方法:
- 先初始化主窗口,添加触发切换的按钮
- 创建子窗口(用
app.startSubWindow()定义内容) - 给按钮绑定回调函数,在函数里切换窗口的显隐状态
代码示例:
from appJar import gui def switch_to_subwindow(): # 隐藏主窗口,显示子窗口 app.hideSubWindow("Main Window") app.showSubWindow("Sub Window") def switch_back_to_main(): # 隐藏子窗口,显示主窗口 app.hideSubWindow("Sub Window") app.showSubWindow("Main Window") # 初始化主窗口 app = gui("Main Window", "400x300") app.addButton("打开子窗口", switch_to_subwindow) # 创建子窗口 app.startSubWindow("Sub Window", modal=False) # modal=False表示非模态,可同时操作多个窗口 app.addLabel("这是子窗口") app.addButton("返回主窗口", switch_back_to_main) app.stopSubWindow() # 启动主窗口 app.go()
方法2:用
switchWindow()一键切换 如果你觉得手动显隐太繁琐,AppJar提供了更简洁的switchWindow()方法,调用它就能直接切换到目标窗口,无需手动隐藏当前窗口:
代码示例:
from appJar import gui def switch_window(target): app.switchWindow(target) app = gui("Main Window", "400x300") app.addButton("切换到子窗口", lambda: switch_window("Sub Window")) # 创建子窗口 app.startSubWindow("Sub Window") app.addLabel("子窗口内容") app.addButton("切换回主窗口", lambda: switch_window("Main Window")) app.stopSubWindow() app.go()
一些注意事项
- 子窗口必须通过
app.startSubWindow()和app.stopSubWindow()来定义,否则无法被识别 - 如果设置子窗口为
modal=True,则子窗口弹出时会锁定主窗口,必须关闭子窗口才能操作主窗口 - 按钮绑定回调时,可以用lambda表达式直接传递参数,比如上面的
lambda: switch_window("Sub Window"),省去单独写多个函数的麻烦
内容的提问来源于stack exchange,提问作者AxJ




