0

我使用 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 中按预期工作!...

编辑2:

我实际上找到了一种使用 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
4

1 回答 1

1

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

并查看 MessageDialog 或 GenericMessageDialog

于 2012-08-27T13:37:03.587 回答