[Python]为啥wxMessageDialog.ShowModal()会引发Python崩溃?

snaill 2004-08-19 04:50:39
源码如下:
import sqlite
import wx

def CreateDatabase() :
cx = sqlite.connect('data.db', encoding='unicode')
cu = cx.cursor()
try :
cu.execute("create table main ( id integer primary key, pid integer, name varchar(10) UNIQUE )")
except sqlite.DatabaseError:
md = wx.MessageDialog(None, "Database is existed", 'DB Error', wx.OK | wx.ICON_ERROR)
md.ShowModal()
return

cu.execute("insert into main values(0, 0, 'name1')")
cu.execute("insert into main values(1, 0, 'hello')")
cx.commit()
cu.close()
cx.close()

if __name__ == '__main__' :
CreateDatabase()
...全文
362 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
snaill 2004-08-24
  • 打赏
  • 举报
回复
to oncsdn(青蛙) :
BREW_GUI()是什么?
snaill 2004-08-24
  • 打赏
  • 举报
回复
谢谢各位

不过有没有什么简单的方法,比如取到桌面作为父窗口?
oncsdn 2004-08-20
  • 打赏
  • 举报
回复
同意limodou() 观点

class BREW_APP(wxApp):
def OnInit(sefl):
dlg = BREW_GUI()
dlg.ShowModal()
dlg.Destroy()
return true

ap = BREW_APP(0)
ap.MainLoop()


我感觉在 wxWindows 中,象出现 "还有打开窗口" 等崩溃时,都因为少个父窗口引起的
而一般在 IDLE (Python GUI) 内时,不会有此现象
jiangwen365 2004-08-20
  • 打赏
  • 举报
回复
支持limodou() ,
接触过你的NewEdit,真的很不错,为我们中国的Python社团争了光啊!
向你学习!
limodou 2004-08-19
  • 打赏
  • 举报
回复
别这么说,一起学习。不敢当啊。
mahongxi 2004-08-19
  • 打赏
  • 举报
回复
agree 2 limodou()

limodou() 是python 老鸟,大家多向他学习.
limodou 2004-08-19
  • 打赏
  • 举报
回复
wxMessageDialog必须有一个父窗口,wxPython是一个图形化的东西,它有一个基本的应用框架,不是任何一个类拿过来就可以用的。

你需要一个app类,并创建一个frame,然后把frame对象作为MessageDialog的第一个参数才可以。直接用当然不行了。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧