前提・実現したいこと
現在、wxpythonで画像をドラッグアンドドロップするGUIを作成しています。
画像をドラッグアンドドロップで貼り付けることには成功したのですが、貼り付けた画像をクリアボタンで削除することがうまくできません。どのようにすれば良いかご教授いただけると幸いです。
よろしくお願い致します。
該当のソースコード
python
1import wx 2 3class FileDropTarget(wx.FileDropTarget):#ドラッグアンドドロップの設定 4 def __init__(self, window): 5 wx.FileDropTarget.__init__(self) 6 self.window = window 7 8 def OnDropFiles(self, x, y, filenames):# ドロップした画像の操作 9 panelsize = self.window.panel_1.GetSize()# ドロップしたパネルのサイズ取得 10 for file in filenames: 11 self.window.text_ctrl_1.SetValue(file) #画像パスをテキストボックスに入力 12 image = wx.Image(file) #画像をimageに格納 13 resizeimge = image.Scale(panelsize[0],panelsize[1],wx.IMAGE_QUALITY_HIGH) #imageに格納した画像をパネルのサイズにScaleで調整 14 item = wx.StaticBitmap(self.window.panel_1, -1, wx.Bitmap(resizeimge))#resizeimgeをwx.Bitmapに変更しwx.StaticBitmapで貼り付 15 self.item = item 16 return True 17 18 19class MyFrame(wx.Frame): 20 def __init__(self, *args, **kwds): 21 kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE 22 wx.Frame.__init__(self, *args, **kwds) 23 self.item = None 24 self.SetSize((500, 500)) 25 self.panel_1 = wx.Panel(self, wx.ID_ANY) 26 self.text_ctrl_1 = wx.TextCtrl(self, wx.ID_ANY, "") 27 self.clearbutton = wx.Button(self, wx.ID_ANY, u"クリア") 28 29 dt = FileDropTarget(self) 30 self.panel_1.SetDropTarget(dt) 31 32 self.__set_properties() 33 self.__bind() 34 self.__do_layout() 35 36 def __set_properties(self): 37 self.SetTitle("frame") 38 self.SetBackgroundColour(wx.Colour(255, 252, 180)) 39 self.panel_1.SetMinSize((400, 400)) 40 self.panel_1.SetBackgroundColour(wx.Colour(192, 192, 192)) 41 self.text_ctrl_1.SetMinSize((111, 23)) 42 43 def __bind(self): 44 self.clearbutton.Bind(wx.EVT_BUTTON, self.OnClearButton) 45 46 def __do_layout(self): 47 sizer_1 = wx.BoxSizer(wx.VERTICAL) 48 sizer_1.Add((20, 20), 0, 0, 0) 49 sizer_1.Add(self.panel_1, 6, wx.EXPAND, 0) 50 sizer_1.Add(self.text_ctrl_1, 0, wx.EXPAND, 0) 51 sizer_1.Add((20, 20), 0, 0, 0) 52 sizer_1.Add(self.clearbutton, 0, wx.ALIGN_CENTER_HORIZONTAL, 0) 53 sizer_1.Add((20, 20), 0, 0, 0) 54 self.SetSizer(sizer_1) 55 self.Layout() 56 57 def OnClearButton(self, event): 58 # x = FileDropTarge(self) 59 if self.text_ctrl_1.GetValue() != "": 60 self.text_ctrl_1.Clear() 61 # x.item.Destroy() 62 63class MyApp(wx.App): 64 def OnInit(self): 65 self.frame = MyFrame(None, wx.ID_ANY, "") 66 self.SetTopWindow(self.frame) 67 self.frame.Show() 68 return True 69 70# end of class MyApp 71 72if __name__ == "__main__": 73 app = MyApp(0) 74 app.MainLoop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/01 12:53