免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5755 | 回复: 5

[wx]关闭窗口后,不能退出 [复制链接]

论坛徽章:
0
发表于 2008-12-27 10:49 |显示全部楼层
代码:

  1. #!/usr/bin/env python

  2. import wx

  3. class MyFrame(wx.Frame):
  4.         def __init__(self, parent, id=-1):
  5.                 wx.Frame.__init__(self, parent, id, title='dialog')
  6.                 panel = wx.Panel(self)
  7.                 but_message = wx.Button(panel, label='Message', pos=(125,10), size=(100,50))
  8.                 but_choose = wx.Button(panel, label='Choose', pos=(125,100), size=(100,50)) #??
  9.                 self.Bind(wx.EVT_BUTTON, self.evt_message, but_message)
  10.                 self.Bind(wx.EVT_BUTTON, self.evt_choose, but_choose)  #??
  11.                 self.Bind(wx.EVT_CLOSE, self.evt_close)
  12.                 pass

  13.         def evt_message(self, event):
  14.                 dlg = wx.MessageDialog(None, 'Is this the coolest thing ever?',
  15.                                         'MessageDialog', wx.YES_NO | wx.ICON_QUESTION)
  16.                 result = dlg.ShowModal()
  17.                 print result
  18.                 dlg.Destroy()

  19.         def evt_choose(self, event):
  20.                 choice = ['abc', 'def', 'ghi']
  21.                 dlg = wx.SingleChoiceDialog(None, 'Which is your favorate name?', 'Single Choice', choice)
  22.                 if dlg.ShowModal() == wx.ID_OK:
  23.                         result = dlg.GetStringSelection()
  24.                         print result

  25.         def evt_close(self, event):
  26.                 self.Destroy()

  27. class MyApp(wx.App):
  28.         def __init__(self, redirect=True):
  29.                 wx.App.__init__(self, redirect)
  30.                 pass
  31.        
  32.         def OnInit(self):
  33.                 frame = MyFrame(None)
  34.                 frame.Show(True)
  35.                 self.SetTopWindow(frame)
  36.                 return True
  37.        
  38.         def OnExit(self):
  39.                 pass

  40. if __name__ == '__main__':
  41.         app = MyApp()
  42.         app.MainLoop()
复制代码

运行命令:
python filename

结果:当关闭窗口时,该程序仍不退出,CTRL+C 后才退出,终端才出现 '$' 提示符
      如果把but_choose有关行去除,则正常退出!
why?

[ 本帖最后由 爱知 于 2008-12-27 10:52 编辑 ]

论坛徽章:
0
发表于 2008-12-27 15:21 |显示全部楼层
try evt.Skip()
gnubuntu 该用户已被删除
发表于 2008-12-29 07:58 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2009-01-04 17:13 |显示全部楼层

回复 #1 爱知 的帖子

def evt_choose(self, event):
                choice = ['abc', 'def', 'ghi']
                dlg = wx.SingleChoiceDialog(None, 'Which is your favorate name?', 'Single Choice', choice)
                if dlg.ShowModal() == wx.ID_OK:
                        result = dlg.GetStringSelection()
                        print result
+                dlg.Destroy()
加上应该可以。

论坛徽章:
0
发表于 2009-01-04 18:08 |显示全部楼层
谢谢楼上的几位回答

原来 Dialog 使用完后,必须得调用 Destroy() method, 和 evt.Skip()

论坛徽章:
0
发表于 2009-01-07 20:36 |显示全部楼层
刚开始接触python,也遇到同样的问题,请教各位前辈高人我这段程序是怎么回事:

import sys
try:
    import pygtk                                                                        
    pygtk.require("2.0")                                                               
except:
    pass

try:                                                                                    
    import gtk,gtk.glade                                                               
except:
    sys.exit(1)

class hskmain:
    """Hello World using Python and GTK"""                                             
            
    def __init__(self):

        #Input Glade XML file
        self.wTree = gtk.glade.XML('hsk.glade')                                         
        self.mainframe = self.wTree.get_widget('window1')                              
        self.tm_lab = self.wTree.get_widget('tm_lab')
        self.tm_lab.set_markup('<big>ffff</big>')
        self.mainframe.show_all()

if __name__ == "__main__":                                                              
    app = hskmain()
    gtk.main()
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP