前提・実現したいこと
現在、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()
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/27 13:28