You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用按钮切换AppJar中的窗口?

嘿,我刚好在AppJar框架里折腾过窗口切换的需求,给你整理了两种实用的实现方式,附上代码和详细解释,一看就懂!

方法1:通过显隐控制切换窗口

这种方式适合你需要手动控制窗口显示/隐藏状态的场景,核心用到app.showSubWindow()app.hideSubWindow()两个方法:

  1. 先初始化主窗口,添加触发切换的按钮
  2. 创建子窗口(用app.startSubWindow()定义内容)
  3. 给按钮绑定回调函数,在函数里切换窗口的显隐状态

代码示例:

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

火山引擎 最新活动