0

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を初めて使用するので、ここに明らかなことがあると思いますが、何が見つかりません。

4

1 に答える 1

0

同じ効果が必要な場合は、StaticTextとStaticBitmapに同じ親を使用する必要があります。
したがって、以下を使用します。

logo = wx.StaticBitmap(self.panel, 1, wx_logo)
于 2012-08-19T21:33:59.817 に答える