0

フレームのクライアント領域に単純な線を引こうとしています。なぜ何も描画されないのかわかりません。私は通常、このようなものに Pygame を使用します。

これが私のコードです:

import wx
sigwin = wx.Frame(None,title = "Name of Window")
sigwin.SetSize(-1,-1,600,200))
sigwin.SetBackgroundColour((255,255,255))
txt = wx.StaticText(sigwin, id=-1, label='Please sign your name in the box below:',pos=(20,40),style=wx.ALIGN_CENTRE_HORIZONTAL)
font3 = wx.Font(15, wx.DECORATIVE, wx.NORMAL, wx.NORMAL,0,'Comic Sans MS')
txt.SetFont(font3)
sigwin.Centre()

def on_paint(event):
    dc = wx.ClientDC(event.GetEventObject())
    dc.Clear()
    dc.SetPen(wx.Pen("BLACK", 0))
    dc.DrawLine(0, 0, 500, 500)
    
sigwin.Bind(wx.EVT_PAINT, on_paint)
sigwin.Show()
4

1 に答える 1

0

GUI ライブラリを使用しているため、実行後にペイント イベントを処理しています。この場合、あなたは線を描いており、wx はその上にテキスト ボックスを描いています。

このコードは、テキスト ボックスを削除し、行を表示します。

import wx
app = wx.App(False)

sigwin = wx.Frame(None,title = "Name of Window")
sigwin.SetSize(-1,-1,600,200)
sigwin.SetBackgroundColour((255,255,255))
#txt = wx.StaticText(sigwin, id=-1, label='Please sign your name in the box below:',pos=(20,40),style=wx.ALIGN_CENTRE_HORIZONTAL)
#font3 = wx.Font(15, wx.DECORATIVE, wx.NORMAL, wx.NORMAL,0,'Comic Sans MS')
#txt.SetFont(font3)
sigwin.Centre()

def on_paint(event):
    dc = wx.ClientDC(event.GetEventObject())
    dc.Clear()
    dc.SetPen(wx.Pen("BLACK", 0))
    dc.DrawLine(0, 0, 500, 500)
    print('paint')
    
sigwin.Bind(wx.EVT_PAINT, on_paint)
sigwin.Show()

#frame = sigwin(None, "Sample editor")
app.MainLoop()
于 2020-07-29T19:25:21.833 に答える