我在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
答案 0 :(得分:1)
EasyGUI基于Tkinter,基本上是一组对话框。我不会混合Tkinter和wxPython。相反,只需在wx中创建对话框。 EasyGUI的大多数对话框在wxPython中都具有等价物,或者可以使用wx.Dialog的简单子类创建。参见:
并查看MessageDialog或GenericMessageDialog