将wxPython与easyGUI结合使用可以分别显示两个窗口

时间:2012-08-27 12:45:46

标签: wxpython easygui

我在Python上使用GUI。我试过easyGUI(http://easygui.sourceforge.net/)并且它工作得很好,除了我还没有找到同时显示两个窗口的方法。

这是我迄今为止在GNU / Linux中尝试过的:

from easygui import *
import wx
class FicheFrame( wx.Frame ) :

    def __init__( self, data ) :
        wx.Frame.__init__( self, None,-1, "Custom data", size=(300, 400) )
        self.d = data
        scrollWin = wx.PyScrolledWindow( self, -1 )

        x = 20       
        y = 20

        txtStr = self.d
        stTxt = wx.StaticText( scrollWin, -1, txtStr, pos=(x, y) )

        w, h = stTxt.GetSize()
        dy = h + 10     
        y += dy


        scrollWin.SetScrollbars( 0, dy,  0, y/dy+1 )
        scrollWin.SetScrollRate( 1, 1 )    

myapp = wx.App( redirect=False )
myAppFrame = FicheFrame('data')
myAppFrame.Show()
exceptionbox(msg='Test test test', title=None)
myapp.MainLoop()

不幸的是,例外框显示在 myAppFrame 之前。当我关闭 exceptionbox ,然后出现 myAppFrame 时,我不明白为什么,不应该相反吗?

修改 这项工作正如Windows中所预期的那样!...

EDIT2:

我实际上通过使用Tkinter找到了一种方法......这段代码有效:

from easygui import *
from Tkinter import *


while True:
    root = Tk()
    w = Label(root, text="Hello, world!")
    w.pack()
    exceptionbox(msg='test test', title=None)
    root.destroy()
    root.mainloop()
    del root

1 个答案:

答案 0 :(得分:1)

EasyGUI基于Tkinter,基本上是一组对话框。我不会混合Tkinter和wxPython。相反,只需在wx中创建对话框。 EasyGUI的大多数对话框在wxPython中都具有等价物,或者可以使用wx.Dialog的简单子类创建。参见:

并查看MessageDialog或GenericMessageDialog