パネルの背景画像を表示する際にwxpythonに問題があります。 win10サーフェイスプロで、サイズ800x600のwx.frameを宣言しました。 フレームで、私は最初に同じサイズの背景パネルを宣言しました。 私はそのstaticbitmapを同じサイズのビットマップで埋めました。wx.panelに背景ビットマップが表示されない
次に、私は中央の底にサイズ320x320の小さなパネルを宣言しました。 私はまた、そのstaticbitmapを320x320のビットマップで埋めました。
しかし、どうにかして、最初の背景パネルは常にstaticbitmapに入れた画像なしで背景色(240,240,240,255)です。 しかし、小さなパネルの画像は常に正しく表示されました。
コードは次のとおりです。
class backgroundPanel(wx.Panel):
def __init__(self, *args, **kw):
x = 0
y = 0
w = 800
h = 600
kw.update({'pos':wx.Position(x, y), 'size':wx.Size(w, h)})
super(backgroundPanel, self).__init__(*args, **kw)
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
currentBitmap = util.queryGuiFrame().canvasBackgroundBitmap
self.staticBitmap = wx.StaticBitmap(self, wx.ID_ANY, currentBitmap)
self.Enable()
self.Refresh()
return
class actioner(wx.Panel):
def __init__(self, *args, **kw):
x = 240
y = 360
w = 320
h = 320
newCanvasState = kw.pop('newCanvasState', None)
print("New actioner from state: ", canvasState, " to :", newCanvasState)
kw.update({'pos':wx.Position(x, y), 'size':wx.Size(w, h)})
super(actioner, self).__init__(*args, **kw)
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
self.currentBitmap = util.queryGuiFrame().testerSittingBitmap
if newCanvasState == None:
#draw the initial actioner
currentBitmap = util.queryGuiFrame().testerSittingBitmap
elif newCanvasState == 'standbyFirst' \
or newCanvasState == 'standby' \
or newCanvasState == 'clockwise1' \
or newCanvasState == 'clockwise2' \
or newCanvasState == 'counterClockwise1' \
or newCanvasState == 'counterClockwise2':
print("drawing actioner standby at (", util.queryGuiFrame().actionerPanelX, ",",
util.queryGuiFrame().actionerPanelY, ")")
currentBitmap = util.queryGuiFrame().testerCuteBitmap
self.staticBitmap = wx.StaticBitmap(self, wx.ID_ANY, currentBitmap)
self.Enable(False)
self.Refresh()
return
私はwxpythonが私から隠していることを何の手がかりもなく1日間これに取り組んできました。 2つのパネルのプロパティを確認しても違いは見られませんでした。 私はまた、宣言の順序で2つのパネルを切り替えようとしました。
同じことですが、その小さなパネルは大きなベージュの背景パネルによって隠されているだけです。
また、背景パネルのビットマップをフレームのstaticbitmapに配置しようとしました。結果はすべて同じ(240,240,240,255)のピクセルのパネルです。
また、IDEがwxpythonとは異なる前提と解釈をするのは面倒です。 私はpyscriptorを使いましたが、問題は少ないようでした。 特に、ウィンドウ全体の境界を宣言する必要があります。
しかし、pyscriptorは子スレッドでブレークポイントを受け入れません。 私はPyDevに切り替えました。 しかし、それはウィンドウ境界全体を違って解釈し、レイアウトが間違って見えます。
私はクライアントがアプリケーションを実行するときに私が見るものを確信していません。
ご意見をお寄せください。