我会尝试尽可能简短地提供帮助。我正在尝试为宠物项目编写一些很酷的代码,它涉及到GUI。到目前为止,我一直在使用appJar,当我正在执行文本输入时,没有问题从原始窗口调用新窗口。但是,尝试制作复选框列表几乎是不可能的。
这是我尝试完成的一些简化代码,但不起作用:
from appJar import gui
def testfunction():
def get(btn):
print(app.getOptionBox("Favourite Pets"))
petlist=["Dogs.txt", "Cats.txt", "Hamsters.txt", "Fish.txt"]
print(petlist)
app=gui()
app.setFont(20)
app.addTickOptionBox("Favourite Pets", petlist)
app.addButton("GET", get)
app.go()
testfunction()
def press(button):
if button == "Cancel":
app2.stop()
else:
testfunction()
app2=gui("Name")
app2.addButtons(["TEST", "Cancel"], press)
app2.go()
当我单独调用testfunction时,输出是预期的:带有{Dogs.txt:True,...}的字典,其中包含True和False,具体取决于您是否单击了菜单中的框。 / p>
但是,如果我尝试在按下按钮内调用该功能,则无论选中的复选框如何,字典中的每个值都将设置为false。这通常不是一件大事,但是我需要第一个设置来返回一个标记为true的值的数组(已经完成,除了能够返回)。是什么给了什么?
; tl-dr Appjar似乎不喜欢嵌套的按钮和选项集,即使它们单独工作也是如此。 HALP。
答案 0 :(得分:0)
我努力重现你提到的问题
但是我建议 - 而不是创建多个GUI,有一个GUI,并创建一个SubWindow
:
from appJar import gui
petlist=["Dogs.txt", "Cats.txt", "Hamsters.txt", "Fish.txt"]
def get(btn):
print(app.getOptionBox("Favourite Pets"))
def press(button):
if button == "Cancel":
app.stop()
else:
app.showSubWindow("Pets")
app = gui("Name")
app.setFont(20)
app.addButtons(["TEST", "Cancel"], press)
app.startSubWindow("Pets")
app.addTickOptionBox("Favourite Pets", petlist)
app.addButton("GET", get)
app.stopSubWindow()
app.go()
这可能会使事情变得更容易管理,并且似乎可以提供理想的结果。