質問編集履歴
6
別方法5を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -233,4 +233,58 @@
|
|
233
233
|

|
234
234
|
|
235
235
|
透過はできるようにはなったようなのですが、その背景に別gifを入れること(まずはバックグラウンドを黒)に挑戦していますが、黒背景もまだでませんしもう少しのようです。
|
236
|
-
そもそも、黒背景ではなく、もう一つの背景gifじたいもユーザーのアクションによって変えたいので端的に背景に挿入しても変更できないのであれば問題ですが…
|
236
|
+
そもそも、黒背景ではなく、もう一つの背景gifじたいもユーザーのアクションによって変えたいので端的に背景に挿入しても変更できないのであれば問題ですが…
|
237
|
+
|
238
|
+
|
239
|
+
《別方法5》
|
240
|
+
```python
|
241
|
+
import wx
|
242
|
+
|
243
|
+
class Mywin(wx.Frame):
|
244
|
+
|
245
|
+
def __init__(self, parent, title):
|
246
|
+
super(Mywin, self).__init__(parent, title = title,size = (500,300))
|
247
|
+
self.InitUI()
|
248
|
+
|
249
|
+
def InitUI(self):
|
250
|
+
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
251
|
+
self.Centre()
|
252
|
+
self.Show(True)
|
253
|
+
|
254
|
+
def OnPaint(self, e):
|
255
|
+
dc = wx.PaintDC(self)
|
256
|
+
brush = wx.Brush("white")
|
257
|
+
dc.SetBackground(brush)
|
258
|
+
dc.Clear()
|
259
|
+
|
260
|
+
dc.DrawBitmap(wx.Bitmap("1.png"),10,10,True)
|
261
|
+
color = wx.Colour(255,0,0)
|
262
|
+
b = wx.Brush(color)
|
263
|
+
|
264
|
+
dc.DrawBitmap(wx.Bitmap("vqkSsK_Z-0.png"),10,10,True)
|
265
|
+
color = wx.Colour(255,0,0)
|
266
|
+
b = wx.Brush(color)
|
267
|
+
|
268
|
+
dc.SetBrush(b)
|
269
|
+
dc.DrawCircle(300,125,50)
|
270
|
+
dc.SetBrush(wx.Brush(wx.Colour(255,255,255)))
|
271
|
+
dc.DrawCircle(300,125,30)
|
272
|
+
|
273
|
+
font = wx.Font(18, wx.ROMAN, wx.ITALIC, wx.NORMAL)
|
274
|
+
dc.SetFont(font)
|
275
|
+
dc.DrawText("Hello wxPython",200,10)
|
276
|
+
|
277
|
+
pen = wx.Pen(wx.Colour(0,0,255))
|
278
|
+
dc.SetPen(pen)
|
279
|
+
dc.DrawLine(200,50,350,50)
|
280
|
+
dc.SetBrush(wx.Brush(wx.Colour(0,255,0), wx.CROSS_HATCH))
|
281
|
+
dc.DrawRectangle(380, 15, 90, 60)
|
282
|
+
|
283
|
+
ex = wx.App()
|
284
|
+
Mywin(None,'Drawing demo')
|
285
|
+
ex.MainLoop()
|
286
|
+
```
|
287
|
+

|
288
|
+
|
289
|
+
DrawBitmapというものを使えば重ねて表示ができそうです。ただこの場合ですとgifで対応できないようです。
|
290
|
+
近づいてはいるとは思いますが、引き続きアドバイスよろしくお願い致します。
|
5
別方法4を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -191,4 +191,46 @@
|
|
191
191
|

|
192
192
|
|
193
193
|
|
194
|
-
この方法でも重ねることはできませんでした。
|
194
|
+
この方法でも重ねることはできませんでした。
|
195
|
+
|
196
|
+
《別方法4》
|
197
|
+
```python
|
198
|
+
|
199
|
+
import wx
|
200
|
+
import wx.adv
|
201
|
+
|
202
|
+
GIFNames = [
|
203
|
+
'sakura.gif'
|
204
|
+
]
|
205
|
+
|
206
|
+
|
207
|
+
class TestPanel(wx.Panel):
|
208
|
+
def __init__(self, parent):
|
209
|
+
|
210
|
+
wx.Panel.__init__(self, parent, -1)
|
211
|
+
|
212
|
+
sizer = wx.FlexGridSizer(2,3,5,5)
|
213
|
+
|
214
|
+
for name in GIFNames:
|
215
|
+
ani = wx.adv.Animation(name)
|
216
|
+
ctrl = wx.adv.AnimationCtrl(self, -1, ani)
|
217
|
+
ctrl.SetBackgroundColour('black')
|
218
|
+
ctrl.Play()
|
219
|
+
|
220
|
+
#sizer.AddF(ctrl, wx.SizerFlags().Border(wx.ALL, 10))
|
221
|
+
|
222
|
+
border = wx.BoxSizer()
|
223
|
+
#border.AddF(sizer, wx.SizerFlags(1).Expand().Border(wx.ALL, 20))
|
224
|
+
self.SetSizer(border)
|
225
|
+
|
226
|
+
app = wx.App()
|
227
|
+
frame = wx.Frame(None)
|
228
|
+
panel = TestPanel(frame)
|
229
|
+
frame.Show()
|
230
|
+
app.MainLoop()
|
231
|
+
```
|
232
|
+

|
233
|
+

|
234
|
+
|
235
|
+
透過はできるようにはなったようなのですが、その背景に別gifを入れること(まずはバックグラウンドを黒)に挑戦していますが、黒背景もまだでませんしもう少しのようです。
|
236
|
+
そもそも、黒背景ではなく、もう一つの背景gifじたいもユーザーのアクションによって変えたいので端的に背景に挿入しても変更できないのであれば問題ですが…
|
4
別方法3追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -121,6 +121,7 @@
|
|
121
121
|
|
122
122
|
### 追記 2020/08/02
|
123
123
|
以下など試してみました。
|
124
|
+
《別方法1》
|
124
125
|
```python
|
125
126
|
class MainWindow(wx.Frame):
|
126
127
|
def __init__(self, parent=None, ID=wx.ID_ANY, title="", *args, **kw):
|
@@ -139,7 +140,7 @@
|
|
139
140
|
def feature_method(self, event):
|
140
141
|
wx.MessageBox('正解です!')
|
141
142
|
```
|
142
|
-
|
143
|
+
《別方法2》
|
143
144
|
```python
|
144
145
|
def main():
|
145
146
|
app = wx.App()
|
@@ -153,4 +154,41 @@
|
|
153
154
|
win_sub.Centre()
|
154
155
|
win_sub.Show()
|
155
156
|
```
|
156
|
-
SubWindowクラスを作るなど試行錯誤しましたが同時に表示はできませんでした。
|
157
|
+
SubWindowクラスを作るなど試行錯誤しましたが同時に表示はできませんでした。
|
158
|
+
|
159
|
+
《別方法3》
|
160
|
+
```python
|
161
|
+
import wx
|
162
|
+
import wx.adv
|
163
|
+
|
164
|
+
class BG(object):#背景の表示
|
165
|
+
def __init__(self, MainPanel,x,y):
|
166
|
+
BGimg =wx.Image("1.png")
|
167
|
+
self.bitmap = BGimg.ConvertToBitmap()
|
168
|
+
wx.StaticBitmap(MainPanel, -1, self.bitmap, (x,y))
|
169
|
+
|
170
|
+
class MyWindow(wx.Frame):
|
171
|
+
def __init__(self, parent=None, id=-1, title=None):
|
172
|
+
wx.Frame.__init__(self, parent, id, title)
|
173
|
+
self.MainPanel = wx.Panel(self, size=(1200, 800))#メイン画面の大きさ
|
174
|
+
self.MainPanel.SetBackgroundColour("Black")
|
175
|
+
self.BackG = BG(self.MainPanel, 0, 0)
|
176
|
+
self.anime = wx.Panel(self.MainPanel, pos=(350, 0), size=(450, 800),
|
177
|
+
style=wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN)
|
178
|
+
self.file = "sakura.gif"
|
179
|
+
self.ani = wx.adv.Animation(self.file)
|
180
|
+
self.ctrl = wx.adv.AnimationCtrl(self.anime, -1, self.ani, pos=(10, 10), style=wx.TRANSPARENT)
|
181
|
+
self.ctrl.Play()
|
182
|
+
self.Fit()
|
183
|
+
|
184
|
+
if __name__ == "__main__":
|
185
|
+
app = wx.App()
|
186
|
+
w = MyWindow(title="test")
|
187
|
+
w.Center
|
188
|
+
w.Show()
|
189
|
+
app.MainLoop()
|
190
|
+
```
|
191
|
+

|
192
|
+
|
193
|
+
|
194
|
+
この方法でも重ねることはできませんでした。
|
3
過去teratailの同種の質問のURLを参考サイト一覧へ追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -108,6 +108,7 @@
|
|
108
108
|
[透過pngをgif動画にするサイト](https://ao-system.net/gifanima/)
|
109
109
|
[アニメーションについて調べたサイト](https://stackoverrun.com/ja/q/10440993)
|
110
110
|
[アニメーションについて調べたサイト2](http://ja.pymotw.com/2/sched/)
|
111
|
+
[過去teratailでの似ている質問(透過gif)](https://teratail.com/questions/172247)
|
111
112
|
|
112
113
|
2つのgifを重ねて一枚一枚保存したものをgifにしてそれを1つのイベントで実行という方法がありますが、
|
113
114
|
私は、あるイベント発生(クリックなど)によって一枚だけのレイヤーに存在する透過gifを他のものに変えたり最終的にはしたいため、イベント自体を2個同時に実行するのがよいと考えております。そもそもイベントを重ねてgifを表示することじたいが調べているのですがでてこなく、知見ある方何かアドバイス頂けないでしょうか。
|
2
feature_method記載漏れのため修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -134,6 +134,9 @@
|
|
134
134
|
feature_button.Bind(wx.EVT_BUTTON, self.feature_method)
|
135
135
|
v_layout.Add(feature_button, proportion=0, flag=wx.ALIGN_CENTER_HORIZONTAL)
|
136
136
|
panel1.SetSizer(v_layout)
|
137
|
+
|
138
|
+
def feature_method(self, event):
|
139
|
+
wx.MessageBox('正解です!')
|
137
140
|
```
|
138
141
|
|
139
142
|
```python
|
1
試したこと記載漏れ
title
CHANGED
File without changes
|
body
CHANGED
@@ -116,4 +116,37 @@
|
|
116
116
|
### 補足情報(FW/ツールのバージョンなど)
|
117
117
|
win10
|
118
118
|
python3.7
|
119
|
-
wxpython
|
119
|
+
wxpython
|
120
|
+
|
121
|
+
### 追記 2020/08/02
|
122
|
+
以下など試してみました。
|
123
|
+
```python
|
124
|
+
class MainWindow(wx.Frame):
|
125
|
+
def __init__(self, parent=None, ID=wx.ID_ANY, title="", *args, **kw):
|
126
|
+
super().__init__(parent, ID, title, *args, **kw)
|
127
|
+
self.animeCtrl = AnimationCtrl(self)
|
128
|
+
|
129
|
+
# 20200801 add
|
130
|
+
panel1 = wx.Panel(self, wx.ID_ANY)
|
131
|
+
v_layout = wx.BoxSizer(wx.VERTICAL)
|
132
|
+
# ButtonA
|
133
|
+
feature_button = wx.Button(panel1, wx.ID_ANY, "Feature")
|
134
|
+
feature_button.Bind(wx.EVT_BUTTON, self.feature_method)
|
135
|
+
v_layout.Add(feature_button, proportion=0, flag=wx.ALIGN_CENTER_HORIZONTAL)
|
136
|
+
panel1.SetSizer(v_layout)
|
137
|
+
```
|
138
|
+
|
139
|
+
```python
|
140
|
+
def main():
|
141
|
+
app = wx.App()
|
142
|
+
win = MainWindow()
|
143
|
+
win.SetSize(800, 800)
|
144
|
+
win.Centre()
|
145
|
+
win.Show()
|
146
|
+
# 20200801 add
|
147
|
+
win_sub = SubWindow()
|
148
|
+
win_sub.SetSize(800, 800)
|
149
|
+
win_sub.Centre()
|
150
|
+
win_sub.Show()
|
151
|
+
```
|
152
|
+
SubWindowクラスを作るなど試行錯誤しましたが同時に表示はできませんでした。
|