🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3610閲覧

wxPythonのGUIに画像をドラッグアンドドロップで表示させる

able

総合スコア7

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

0クリップ

投稿2020/11/26 13:32

前提・実現したいこと

現在、wxPythonでドラッグアンドドロップで画像とパスを表示させるGUIを作成しています。
ドラッグアンドドロップでパスを表示させることには成功したのですが、画像をリサイズしてパネル上に表示させる方法がわかりません。どのようなコードにすれば良いかご教授いただけると幸いです。
よろしくお願い致します。

該当のソースコード

python

1#画像表示.py 2 3import wx 4import wx.adv 5 6class No1FileDropTarget(wx.FileDropTarget): 7 def __init__(self, window): 8 wx.FileDropTarget.__init__(self) 9 self.window = window 10 11 def OnDropFiles(self, x, y, filenames): 12 # ファイルパスをテキストフィールドに表示 13 for file in filenames: 14 self.window.no1text.SetValue(file) 15 return True 16 17class No2FileDropTarget(wx.FileDropTarget): 18 def __init__(self, window): 19 wx.FileDropTarget.__init__(self) 20 self.window = window 21 22 def OnDropFiles(self, x, y, filenames): 23 # ファイルパスをテキストフィールドに表示 24 for file in filenames: 25 self.window.no2text.SetValue(file) 26 return True 27 28class No3FileDropTarget(wx.FileDropTarget): 29 def __init__(self, window): 30 wx.FileDropTarget.__init__(self) 31 self.window = window 32 33 def OnDropFiles(self, x, y, filenames): 34 # ファイルパスをテキストフィールドに表示 35 for file in filenames: 36 self.window.no3text.SetValue(file) 37 return True 38 39class No4FileDropTarget(wx.FileDropTarget): 40 def __init__(self, window): 41 wx.FileDropTarget.__init__(self) 42 self.window = window 43 44 def OnDropFiles(self, x, y, filenames): 45 # ファイルパスをテキストフィールドに表示 46 for file in filenames: 47 self.window.no4text.SetValue(file) 48 return True 49 50class No5FileDropTarget(wx.FileDropTarget): 51 def __init__(self, window): 52 wx.FileDropTarget.__init__(self) 53 self.window = window 54 55 def OnDropFiles(self, x, y, filenames): 56 # ファイルパスをテキストフィールドに表示 57 for file in filenames: 58 self.window.no5text.SetValue(file) 59 return True 60 61class No6FileDropTarget(wx.FileDropTarget): 62 def __init__(self, window): 63 wx.FileDropTarget.__init__(self) 64 self.window = window 65 66 def OnDropFiles(self, x, y, filenames): 67 # ファイルパスをテキストフィールドに表示 68 for file in filenames: 69 self.window.no6text.SetValue(file) 70 return True 71 72 73class MyFrame(wx.Frame): 74 def __init__(self, *args, **kwds): 75 kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE 76 wx.Frame.__init__(self, *args, **kwds) 77 self.SetSize((1000, 850)) 78 self.datepicker_ctrl_1 = wx.adv.DatePickerCtrl(self, wx.ID_ANY) 79 self.no1labeltext = wx.TextCtrl(self, wx.ID_ANY, "No1", style=wx.TE_CENTRE | wx.TE_READONLY) 80 self.no2labeltext = wx.TextCtrl(self, wx.ID_ANY, "No2", style=wx.TE_CENTRE | wx.TE_READONLY) 81 self.no3labeltext = wx.TextCtrl(self, wx.ID_ANY, "No3", style=wx.TE_CENTRE | wx.TE_READONLY) 82 self.no1panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) 83 self.no2panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) 84 self.no3panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) 85 self.no1text = wx.TextCtrl(self, wx.ID_ANY, "") 86 self.no2text = wx.TextCtrl(self, wx.ID_ANY, "") 87 self.no3text = wx.TextCtrl(self, wx.ID_ANY, "") 88 self.no4labeltext = wx.TextCtrl(self, wx.ID_ANY, "No4", style=wx.TE_CENTRE | wx.TE_READONLY) 89 self.no5labeltext = wx.TextCtrl(self, wx.ID_ANY, "No5", style=wx.TE_CENTRE | wx.TE_READONLY) 90 self.no6labeltext = wx.TextCtrl(self, wx.ID_ANY, "No6", style=wx.TE_CENTRE | wx.TE_READONLY) 91 self.no4panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) 92 self.no5panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) 93 self.no6panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) 94 self.no4text = wx.TextCtrl(self, wx.ID_ANY, "") 95 self.no5text = wx.TextCtrl(self, wx.ID_ANY, "") 96 self.no6text = wx.TextCtrl(self, wx.ID_ANY, "") 97 98 #ドロップ対象の設定 99 dt1 = No1FileDropTarget(self) 100 self.no1panel.SetDropTarget(dt1) 101 102 dt2 = No2FileDropTarget(self) 103 self.no2panel.SetDropTarget(dt2) 104 105 dt3 = No3FileDropTarget(self) 106 self.no3panel.SetDropTarget(dt3) 107 108 dt4 = No4FileDropTarget(self) 109 self.no4panel.SetDropTarget(dt4) 110 111 dt5 = No5FileDropTarget(self) 112 self.no5panel.SetDropTarget(dt5) 113 114 dt6 = No6FileDropTarget(self) 115 self.no6panel.SetDropTarget(dt6) 116 117 self.__set_properties() 118 self.__do_layout() 119 120 def __set_properties(self): 121 self.SetTitle("frame") 122 self.SetBackgroundColour(wx.Colour(255, 252, 180)) 123 self.datepicker_ctrl_1.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) 124 self.no1labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) 125 self.no2labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) 126 self.no3labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) 127 self.no1panel.SetBackgroundColour(wx.Colour(255, 255, 255)) 128 self.no1panel.SetFocus() 129 self.no2panel.SetBackgroundColour(wx.Colour(255, 255, 255)) 130 self.no2panel.SetFocus() 131 self.no3panel.SetBackgroundColour(wx.Colour(255, 255, 255)) 132 self.no4labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) 133 self.no5labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) 134 self.no6labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) 135 self.no4panel.SetBackgroundColour(wx.Colour(255, 255, 255)) 136 self.no5panel.SetBackgroundColour(wx.Colour(255, 255, 255)) 137 self.no6panel.SetBackgroundColour(wx.Colour(255, 255, 255)) 138 139 140 141 def __do_layout(self): 142 sizer_1 = wx.BoxSizer(wx.VERTICAL) 143 sizer_6 = wx.BoxSizer(wx.HORIZONTAL) 144 grid_sizer_2 = wx.FlexGridSizer(3, 3, 0, 0) 145 sizer_4 = wx.BoxSizer(wx.HORIZONTAL) 146 grid_sizer_1 = wx.FlexGridSizer(3, 3, 0, 0) 147 sizer_3 = wx.BoxSizer(wx.HORIZONTAL) 148 sizer_1.Add((20, 20), 0, 0, 0) 149 sizer_3.Add((20, 20), 0, 0, 0) 150 datelabel = wx.StaticText(self, wx.ID_ANY, u"撮影年月日:") 151 datelabel.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) 152 sizer_3.Add(datelabel, 0, 0, 0) 153 sizer_3.Add(self.datepicker_ctrl_1, 0, 0, 0) 154 sizer_1.Add(sizer_3, 1, wx.EXPAND, 0) 155 sizer_1.Add((20, 20), 0, 0, 0) 156 grid_sizer_1.Add(self.no1labeltext, 0, wx.ALL | wx.EXPAND, 0) 157 grid_sizer_1.Add(self.no2labeltext, 0, wx.ALL | wx.EXPAND, 0) 158 grid_sizer_1.Add(self.no3labeltext, 0, wx.ALL | wx.EXPAND, 0) 159 grid_sizer_1.Add(self.no1panel, 1, wx.EXPAND, 0) 160 grid_sizer_1.Add(self.no2panel, 1, wx.EXPAND, 0) 161 grid_sizer_1.Add(self.no3panel, 1, wx.EXPAND, 0) 162 grid_sizer_1.Add(self.no1text, 0, wx.EXPAND, 0) 163 grid_sizer_1.Add(self.no2text, 0, wx.EXPAND, 0) 164 grid_sizer_1.Add(self.no3text, 0, wx.EXPAND, 0) 165 grid_sizer_1.AddGrowableRow(1) 166 grid_sizer_1.AddGrowableCol(0) 167 grid_sizer_1.AddGrowableCol(1) 168 grid_sizer_1.AddGrowableCol(2) 169 sizer_4.Add(grid_sizer_1, 10, wx.ALL | wx.EXPAND, 1) 170 sizer_1.Add(sizer_4, 7, wx.EXPAND, 0) 171 grid_sizer_2.Add(self.no4labeltext, 0, wx.ALL | wx.EXPAND, 0) 172 grid_sizer_2.Add(self.no5labeltext, 0, wx.ALL | wx.EXPAND, 0) 173 grid_sizer_2.Add(self.no6labeltext, 0, wx.ALL | wx.EXPAND, 0) 174 grid_sizer_2.Add(self.no4panel, 1, wx.EXPAND, 0) 175 grid_sizer_2.Add(self.no5panel, 1, wx.EXPAND, 0) 176 grid_sizer_2.Add(self.no6panel, 1, wx.EXPAND, 0) 177 grid_sizer_2.Add(self.no4text, 0, wx.EXPAND, 0) 178 grid_sizer_2.Add(self.no5text, 0, wx.EXPAND, 0) 179 grid_sizer_2.Add(self.no6text, 0, wx.EXPAND, 0) 180 grid_sizer_2.AddGrowableRow(1) 181 grid_sizer_2.AddGrowableCol(0) 182 grid_sizer_2.AddGrowableCol(1) 183 grid_sizer_2.AddGrowableCol(2) 184 sizer_6.Add(grid_sizer_2, 10, wx.ALL | wx.EXPAND, 1) 185 sizer_1.Add(sizer_6, 7, wx.EXPAND, 0) 186 sizer_1.Add((20, 20), 0, 0, 0) 187 self.SetSizer(sizer_1) 188 self.Layout() 189 190class MyApp(wx.App): 191 def OnInit(self): 192 self.frame = MyFrame(None, wx.ID_ANY, "") 193 self.SetTopWindow(self.frame) 194 self.frame.Show() 195 return True 196 197if __name__ == "__main__": 198 app = MyApp(0) 199 app.MainLoop()
teamikl👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

画像のファイルパス所得までは出来ているようなので、

  • 画像を表示するだけなら、

 表示領域は wx.Panel ではなく、wx.StaticBitmap を使います

  • wx.Image でイメージオブジェクト作成
  • リサイズの必要がある場合は、Scale メソッドを利用
  • wx.Bitmap でビットマップに変換
  • wx.StaticBitmap のSetBitmap メソッドで表示画像の変更

※リサイズしないなら、直接 wx.Bitmap に読み込んでも可。
ウィンドウのリサイズに合わせて画像サイズも変更するなら、
ファイルから読み込んだImageオブジェクトは何処かの変数に保持しておく。


質問とは関係ない部分ですが、
No1~6 迄、それぞれ別のクラスになってますが
ひとつのクラスにまとめた方が良いです。

個別に異なる点がある場合は、その差分を変数にして外から与えたり、
サブクラスにしたりします。共通部分はひとつのクラスにまとめられるはずです。

6枚のパネルは質問とは関係ない部分なので、
まずは1つのパネルで、ドラッグ&ドロップとは関係なく
単純に画像の表示するプログラムを作ってみましょう。

質問の際に掲載するコードもコンパクトになり、
問題点もわかりやすくなります。

投稿2020/11/26 18:26

teamikl

総合スコア8738

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

able

2020/11/27 13:28

teamikl様 ご回答いただきありがとうございます。 なんとか画像表示を実装することができました。 それぞれの個別のクラスも変数を使い一つにまとめることもできました。
guest

0

備忘録代わりに回答を基に修正したコードを書いておきます。

import wx import wx.adv class FileDropTarget(wx.FileDropTarget):#ドラッグアンドドロップの設定 def __init__(self, window): wx.FileDropTarget.__init__(self) self.panelname = None #インスタンス変数panelnameを宣言 self.textname = None #インスタンス変数textnameを宣言 self.window = window def OnDropFiles(self, x, y, filenames):# ドロップした画像の操作 panelsize = self.panelname.GetSize()# ドロップしたパネルのサイズ取得 for file in filenames: self.textname.SetValue(file) #画像パスをテキストボックスに入力 image = wx.Image(file) #画像をimageに格納 resizeimge = image.Scale(panelsize[0],panelsize[1],wx.IMAGE_QUALITY_HIGH) #imageに格納した画像をパネルのサイズにScaleで調整 wx.StaticBitmap(self.panelname, -1, wx.Bitmap(resizeimge)) #resizeimgeをwx.Bitmapに変更しwx.StaticBitmapで貼り付け return True class MyFrame(wx.Frame): def __init__(self, *args, **kwds): kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.SetSize((1000, 850)) self.datepicker_ctrl_1 = wx.adv.DatePickerCtrl(self, wx.ID_ANY) self.no1labeltext = wx.TextCtrl(self, wx.ID_ANY, "No1", style=wx.TE_CENTRE | wx.TE_READONLY) self.no2labeltext = wx.TextCtrl(self, wx.ID_ANY, "No2", style=wx.TE_CENTRE | wx.TE_READONLY) self.no3labeltext = wx.TextCtrl(self, wx.ID_ANY, "No3", style=wx.TE_CENTRE | wx.TE_READONLY) panellist=[]#パネルリスト作成 textlist=[]#テキストリスト作成 self.no1panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) panellist.append(self.no1panel)#リスト追加 self.no2panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) panellist.append(self.no2panel)#リスト追加 self.no3panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) panellist.append(self.no3panel)#リスト追加 self.no1text = wx.TextCtrl(self, wx.ID_ANY, "") textlist.append(self.no1text)#リスト追加 self.no2text = wx.TextCtrl(self, wx.ID_ANY, "") textlist.append(self.no2text)#リスト追加 self.no3text = wx.TextCtrl(self, wx.ID_ANY, "") textlist.append(self.no3text)#リスト追加 self.no4labeltext = wx.TextCtrl(self, wx.ID_ANY, "No4", style=wx.TE_CENTRE | wx.TE_READONLY) self.no5labeltext = wx.TextCtrl(self, wx.ID_ANY, "No5", style=wx.TE_CENTRE | wx.TE_READONLY) self.no6labeltext = wx.TextCtrl(self, wx.ID_ANY, "No6", style=wx.TE_CENTRE | wx.TE_READONLY) self.no4panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) panellist.append(self.no4panel)#リスト追加 self.no5panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) panellist.append(self.no5panel)#リスト追加 self.no6panel = wx.Panel(self, wx.ID_ANY, style=wx.BORDER_SIMPLE) panellist.append(self.no6panel)#リスト追加 self.no4text = wx.TextCtrl(self, wx.ID_ANY, "") textlist.append(self.no4text)#リスト追加 self.no5text = wx.TextCtrl(self, wx.ID_ANY, "") textlist.append(self.no5text)#リスト追加 self.no6text = wx.TextCtrl(self, wx.ID_ANY, "") textlist.append(self.no6text)#リスト追加 #ドロップ対象の設定 dtlist = ['dt1','dt2','dt3','dt4','dt5','dt6']#dtlist作成 for i in range (0,6): #繰り返しでリストから写真6枚分ドロップ対象の設定 dtlist[i] = FileDropTarget(self)# インスタンスを生成する dtlist[i].panelname = panellist[i] #FileDropTargetクラスのpanelnameに代入 dtlist[i].textname = textlist[i] #FileDropTargetクラスのtextnameに代入 panellist[i].SetDropTarget(dtlist[i]) self.__set_properties() self.__do_layout() def __set_properties(self): self.SetTitle("frame") self.SetBackgroundColour(wx.Colour(255, 252, 180)) self.datepicker_ctrl_1.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) self.no1labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) self.no2labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) self.no3labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) self.no1panel.SetBackgroundColour(wx.Colour(255, 255, 255)) self.no1panel.SetFocus() self.no2panel.SetBackgroundColour(wx.Colour(255, 255, 255)) self.no2panel.SetFocus() self.no3panel.SetBackgroundColour(wx.Colour(255, 255, 255)) self.no4labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) self.no5labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) self.no6labeltext.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) self.no4panel.SetBackgroundColour(wx.Colour(255, 255, 255)) self.no5panel.SetBackgroundColour(wx.Colour(255, 255, 255)) self.no6panel.SetBackgroundColour(wx.Colour(255, 255, 255)) def __do_layout(self): sizer_1 = wx.BoxSizer(wx.VERTICAL) sizer_6 = wx.BoxSizer(wx.HORIZONTAL) grid_sizer_2 = wx.FlexGridSizer(3, 3, 0, 0) sizer_4 = wx.BoxSizer(wx.HORIZONTAL) grid_sizer_1 = wx.FlexGridSizer(3, 3, 0, 0) sizer_3 = wx.BoxSizer(wx.HORIZONTAL) sizer_1.Add((20, 20), 0, 0, 0) sizer_3.Add((20, 20), 0, 0, 0) datelabel = wx.StaticText(self, wx.ID_ANY, u"撮影年月日:") datelabel.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) sizer_3.Add(datelabel, 0, 0, 0) sizer_3.Add(self.datepicker_ctrl_1, 0, 0, 0) sizer_1.Add(sizer_3, 1, wx.EXPAND, 0) sizer_1.Add((20, 20), 0, 0, 0) grid_sizer_1.Add(self.no1labeltext, 0, wx.ALL | wx.EXPAND, 0) grid_sizer_1.Add(self.no2labeltext, 0, wx.ALL | wx.EXPAND, 0) grid_sizer_1.Add(self.no3labeltext, 0, wx.ALL | wx.EXPAND, 0) grid_sizer_1.Add(self.no1panel, 1, wx.EXPAND, 0) grid_sizer_1.Add(self.no2panel, 1, wx.EXPAND, 0) grid_sizer_1.Add(self.no3panel, 1, wx.EXPAND, 0) grid_sizer_1.Add(self.no1text, 0, wx.EXPAND, 0) grid_sizer_1.Add(self.no2text, 0, wx.EXPAND, 0) grid_sizer_1.Add(self.no3text, 0, wx.EXPAND, 0) grid_sizer_1.AddGrowableRow(1) grid_sizer_1.AddGrowableCol(0) grid_sizer_1.AddGrowableCol(1) grid_sizer_1.AddGrowableCol(2) sizer_4.Add(grid_sizer_1, 10, wx.ALL | wx.EXPAND, 1) sizer_1.Add(sizer_4, 7, wx.EXPAND, 0) grid_sizer_2.Add(self.no4labeltext, 0, wx.ALL | wx.EXPAND, 0) grid_sizer_2.Add(self.no5labeltext, 0, wx.ALL | wx.EXPAND, 0) grid_sizer_2.Add(self.no6labeltext, 0, wx.ALL | wx.EXPAND, 0) grid_sizer_2.Add(self.no4panel, 1, wx.EXPAND, 0) grid_sizer_2.Add(self.no5panel, 1, wx.EXPAND, 0) grid_sizer_2.Add(self.no6panel, 1, wx.EXPAND, 0) grid_sizer_2.Add(self.no4text, 0, wx.EXPAND, 0) grid_sizer_2.Add(self.no5text, 0, wx.EXPAND, 0) grid_sizer_2.Add(self.no6text, 0, wx.EXPAND, 0) grid_sizer_2.AddGrowableRow(1) grid_sizer_2.AddGrowableCol(0) grid_sizer_2.AddGrowableCol(1) grid_sizer_2.AddGrowableCol(2) sizer_6.Add(grid_sizer_2, 10, wx.ALL | wx.EXPAND, 1) sizer_1.Add(sizer_6, 7, wx.EXPAND, 0) sizer_1.Add((20, 20), 0, 0, 0) self.SetSizer(sizer_1) self.Layout() class MyApp(wx.App): def OnInit(self): self.frame = MyFrame(None, wx.ID_ANY, "") self.SetTopWindow(self.frame) self.frame.Show() return True if __name__ == "__main__": app = MyApp(0) app.MainLoop()

投稿2020/11/27 13:35

able

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問