Pythonアプリケーションにwxを使い始めましたが、フレームに画像を含めようとすると小さな問題が発生します。
これを簡単な例にまとめました。私が理解していないのは、画像をテキストに置き換えるときにレイアウトの問題がないということです。画像を入力しようとすると、レイアウトが台無しになります。
これが、2つの要素のみを含むテキスト付きのレイアウトです。ロゴ、およびアプリケーションのタイトル
そして、これがロゴを挿入しようとしたときに得たものです:
なんらかの理由でレイアウトが崩れ、タイトルが左上に配置されています(もう見えません)。
これが私のコードです:
#!/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
イメージの場所を正しい場所に変更すると、どのコンピューターでも実行できるはずです。
2つの画像間で変更されるコードの行は次のとおりです。
#logo = wx.StaticBitmap(self, 1, wx_logo)
logo = wx.StaticText(self.panel, label="Logo Here") # Change for proper logo
私はwxPythonを初めて使用するので、ここに明らかなことがあると思いますが、何が見つかりません。