为了获得潜在的帮助,我会尽量简明扼要。我正在试着为一个我喜欢的项目写一些很酷的代码,它涉及到一个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()当我自己调用测试函数时,输出是预期的:一个包含{Dogs.txt: True,...}的字典,其中的True和False取决于您是否单击了菜单中的框。
但是,如果我尝试在按下按钮时调用函数,则字典中的每个值都被设置为false,而不管选中的框是什么。这通常不是什么大问题,但是我需要第一次设置返回一个带有标记为true的值的数组(已经完成了,除了能够返回)。怎么回事?
;tl-dr Appjar似乎不喜欢嵌套的按钮和选项集,即使它们单独工作得很好。哈普。
发布于 2017-07-29 04:01:24
我正在努力重现你提到的问题
但我建议使用一个图形用户界面并创建一个SubWindow,而不是创建多个GUI
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()这可能会让事情变得更容易管理,而且似乎会给出预期的结果。
https://stackoverflow.com/questions/45245137
复制相似问题