【问题标题】:How do you programmatically close a wxPython frame?你如何以编程方式关闭 wxPython 框架?
【发布时间】:2014-04-01 02:13:51
【问题描述】:

我正在尝试在 python 的 unittest 框架的 tearDown 方法中关闭一个 wxPython 框架。 这是我目前尝试用来设置和拆除框架的代码。

class ValidInputTest4(unittest.TestCase):
    def setUp(self):
        total_food_calories = wx.App()
        self.one = FoodCalories(None)
        total_food_calories.MainLoop()

    def tearDown(self):
        self.one.Close()

此代码正确显示应用程序,但无法完全关闭应用程序,就像用户手动单击右上角的“X”按钮一样。

【问题讨论】:

    标签: python-2.7 wxpython


    【解决方案1】:

    你能试试Destroy() 方法吗?也许这行得通。

    【讨论】:

      【解决方案2】:

      Close 是关闭框架的正确方法,但是当调用 MainLoop 直到所有框架都关闭时,您的代码将陷入无限的 gui 事件循环,这必须通过手动单击“X”来实现,因为它不会到达您的调用关闭。

      【讨论】:

        【解决方案3】:

        我发现了问题。我不需要在应用程序上启动 MainLoop。 我的工作代码现在是这样的。

        class ValidInputTest4(unittest.TestCase):
            def setUp(self):
                self.app = wx.App()
                self.frame = FoodCalories(None)
        
            def tearDown(self):
                self.frame.Destroy()
        

        这干净地退出了程序,并允许我在两者之间进行单元测试。

        【讨论】:

          猜你喜欢
          • 2021-02-25
          • 2016-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-15
          • 2015-11-26
          • 2020-07-08
          相关资源
          最近更新 更多