0

テキスト入力ダイアログを実行しようとしていますが、組み込みのメソッドを使用したくありません。私はかなりうまくやっています.唯一の問題は、ボタンが完全に表示されていることですが、テキストエントリは非表示になっています.

問題はどこにありますか?

class RouteWindow(wx.Dialog):
   def __init__(self):
    super(RouteWindow, self).__init__(None)
    self.DialogUI()
    self.SetSize((200, 250))
    self.SetTitle("Specify Route...")

   def DialogUI(self):
    pan = wx.Panel(self)
    vbox = wx.BoxSizer(wx.VERTICAL) 
    dial_box = wx.BoxSizer(wx.HORIZONTAL)
    dial_text = wx.StaticText(pan, label = "Route :")
    dial_box.Add(dial_text,0,wx.ALL,5)
    dial_camp = wx.TextCtrl(pan)
    dial_box.Add(dial_camp,wx.EXPAND)
    vbox.Add(dial_box,wx.ALIGN_CENTER|wx.TOP, border = 4)
    opt_box = wx.BoxSizer(wx.HORIZONTAL)
    opt_close = wx.Button(self, label = "Close")
    opt_ok = wx.Button(self, label = "OK" )
    opt_box.Add(opt_ok)
    opt_box.Add(opt_close, flag =  wx.LEFT, border = 5)
    vbox.Add(opt_box, flag = wx.ALIGN_CENTER|wx.BOTTOM, border = 4)
    self.SetSizer(vbox)
4

1 に答える 1

1

レイアウトが間違っています...パンを追加する必要があります

def DialogUI(self):
    pan = wx.Panel(self)
    vbox = wx.BoxSizer(wx.VERTICAL) 
    dial_box = wx.BoxSizer(wx.HORIZONTAL)
    dial_text = wx.StaticText(pan, label = "Route :")
    dial_box.Add(dial_text,0,wx.ALL,5)
    dial_camp = wx.TextCtrl(pan)
    dial_box.Add(dial_camp,wx.EXPAND)
    pan.SetSizer(dial_box) #<---- set sizer of pan to be dial_box

    vbox.Add(pan,wx.ALIGN_CENTER|wx.TOP, border = 4) #<----add pan to main sizer
    opt_box = wx.BoxSizer(wx.HORIZONTAL)
    opt_close = wx.Button(self, label = "Close")
    opt_ok = wx.Button(self, label = "OK" )
    opt_box.Add(opt_ok)
    opt_box.Add(opt_close, flag =  wx.LEFT, border = 5)
    vbox.Add(opt_box, flag = wx.ALIGN_CENTER|wx.BOTTOM, border = 4)
    self.SetSizer(vbox)

get_text_from_user ビルトインを使用しない理由はわかりませんが...さらに言えば、自分自身にアタッチするのではなく、パネルを作成する理由が本当にわかりません...

余談ですが、あなたが作るなら

opt_ok = wx.Button(self,wx.ID_OK )
opt_close = wx.Button(self,wx.ID_CANCEL )

あなたは無料でいくつかの動作を得るでしょう(ショーモーダルからのIEリターン)

于 2013-08-05T17:04:09.730 に答える