这最终会导致崩溃吗(wxpython)



我计划在程序中包含300多个问题/提示。流程大致如下:

创建一个包含问题的窗口。将答案存储在变量中。创建有问题的新窗口。存储新答案

这将持续300多个问题


我有两个问题:


1) 这最终会导致崩溃吗,因为我正在创建这么多窗口

2) 如果你对第二个问题(A2)选择"是",一切都可以用这个代码,但如果你选择"否",它就不起作用。你能看看你能不能发现它出了什么问题?


import wx
a1 = ['Apples', 'Bananas', 'Strawberries', 'Watermelon',
     "Don't remember", 'None of the above']
a2 = ['No', 'Yes']
a4 = ['No', 'Yes']

class Fruit(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, 'Fruit', size=(300,200))
        #create panel and button
        panel = wx.Panel(self)
        # B1 - create multiple choice list
        box = wx.MultiChoiceDialog(None, """
A1.    What kind of fruit did you buy at the store?""", 'Fruit', a1)
        if box.ShowModal() == wx.ID_OK:
            a_1 = box.GetSelections()

        print (a_1, 'n')
        # A2 - create single choice list
        box = wx.SingleChoiceDialog(None, """
A2.    Do you like eating fruit?
""", 'Fruit', a2)
        if box.ShowModal() == wx.ID_OK:
            a_2 = box.GetStringSelection()
        print (a_2, 'n')
        if a_2 == 'Yes':
            box = wx.TextEntryDialog(None, "A3.    What kind of fruit is your favorite? ", "Fruit", "")
        if box.ShowModal() == wx.ID_OK:
            a_3 = box.GetValue()
        print (a_3, 'n')

        box = wx.SingleChoiceDialog(None, """
A4.    Did you eat the fruit that you bought?
""", 'Fruit', a4)
        if box.ShowModal() == wx.ID_OK:
            a_4 = box.GetStringSelection()
        print (a_4, 'n')

感谢

圣牛。你不是真的那样把对话框链接起来,是吗?尝试回答您的问题:

  1. 这最终会导致崩溃吗:这段代码应该在有人单击"否"后的第一个print处失败。参见要点#2。这里缺少了很多内容,我看不到任何错误处理,没有__main__,缺少App()等。因为您正在反复重新分配box的值,我认为您不太可能遇到内存问题,但在现阶段,这些是您最不关心的问题
  2. 如果单击"是",一切都会正常,但如果单击"否",则会失败:这来自此box.ShowModal() == wx.ID_OK。只有当您从对话框中获得OK值时,才创建变量a_#。你可以这样做:

    a_1 = box.getSelections() if box.ShowModal() == wx.ID_OK else None

在这里,你可以用一些有意义的值来代替None。。请注意,这使用了Python三元语法,它是在2.5或2.6中引入的。它不适用于2.4。

尽管如此,你可能想要创建的是一个向导。它们"通常用于将复杂的对话框分解为几个简单的步骤"。wxWidgets上有一个教程,可能会有所启发。一旦您了解了这一点,就应该研究sizer,因为看起来您正在使用多行字符串来创建空白(?)。

相关内容

  • 没有找到相关文章

最新更新