Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 插入图像会破坏框架布局_Python_User Interface_Wxpython - Fatal编程技术网

Python 插入图像会破坏框架布局

Python 插入图像会破坏框架布局,python,user-interface,wxpython,Python,User Interface,Wxpython,我开始在Python应用程序中使用wx,当我试图在一个框架中包含一个图像时遇到了一个小问题 我把它编译成一个简单的例子。 我不明白的是,用文本替换图像时,我的布局没有问题。当我尝试进入图像时,布局会被破坏 这是我的文本布局,它只包含两个元素。应用程序的徽标和标题 下面是我在尝试插入徽标时得到的结果: 由于某种原因,布局被破坏了,标题被放在左上角(我们再也看不到了) 这是我的密码: #!/usr/bin/env python import wx class IvolutionWindow(w

我开始在Python应用程序中使用wx,当我试图在一个框架中包含一个图像时遇到了一个小问题

我把它编译成一个简单的例子。 我不明白的是,用文本替换图像时,我的布局没有问题。当我尝试进入图像时,布局会被破坏

这是我的文本布局,它只包含两个元素。应用程序的徽标和标题

下面是我在尝试插入徽标时得到的结果:

由于某种原因,布局被破坏了,标题被放在左上角(我们再也看不到了)

这是我的密码:

#!/usr/bin/env python
import wx

class IvolutionWindow(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(200, 100))
        self.panel = wx.Panel(self)
        # Creating the title layout
        title = self.setup_titlelayout()

        # Creating the main grid
        maingrid = self.setup_maingrid(title)
        self.panel.SetSizer(maingrid)
        self.panel.Layout()
        self.Show(True)

    def setup_titlelayout(self):
        hbox = wx.BoxSizer(wx.HORIZONTAL)  # used to contain logo part and text part
        vbox = wx.BoxSizer(wx.VERTICAL)  # used to separate title and one-liner
        logobox = wx.BoxSizer(wx.HORIZONTAL)

        wx_logo = wx.EmptyBitmap(1, 1)  # Create a bitmap container object.
        wx_logo.LoadFile("ivolution/data/media/vitruve_50.jpg", wx.BITMAP_TYPE_ANY)  # Load it with a file image.

        #logo = wx.StaticBitmap(self, 1, wx_logo)
        logo = wx.StaticText(self.panel, label="Logo Here")  # Change for proper logo
        title = wx.StaticText(self.panel, label="Ivolution")

        logobox.Add(logo)
        vbox.Add(title, flag=wx.RIGHT, border=8)

        hbox.Add(logobox, flag=wx.RIGHT, border=8)
        hbox.Add(vbox, flag=wx.RIGHT, border=8)

        return hbox

    def setup_maingrid(self, title):
        maingrid = wx.FlexGridSizer(4, 1, vgap=0, hgap=0)
        maingrid.Add(title)
        return maingrid

    def on_exit(self, event):
        self.Close(True)  # Close the frame.

if __name__ == "__main__":
    app = wx.App(False)
    frame = IvolutionWindow(None, "Ivolution")
    app.MainLoop()  # Runs application
如果您将图像的位置更改为正确位置,则它应在任何计算机上运行

两张图片之间唯一的代码变化是:

#logo = wx.StaticBitmap(self, 1, wx_logo)

logo = wx.StaticText(self.panel, label="Logo Here")  # Change for proper logo

我是wxPython的新手,所以我想这里有一些明显的东西,但我找不到什么

如果希望获得相同的效果,则应该对StaticText和StaticBitmap使用相同的父对象。
因此,使用:

logo = wx.StaticBitmap(self.panel, 1, wx_logo)

这是显而易见的。非常感谢你!