0

我正在尝试做一个文本输入对话框,但我不想使用内置方法。我做得很好,唯一的问题是按钮显示完美,但文本条目是 Hidden

问题出在哪里?

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 回答