2010-07-14 2 views
0

В диалоговом окне Windows иногда есть небольшая кнопка ? в верхнем правом углу. Его использование - нажать на ?, затем курсор изменится на стрелку с ?, затем нажмите на виджет внутри диалогового окна, в котором затем появится всплывающий всплывающий экран.wxPython: диалоговое окно контекста всплывающее

Это как мое определение класса выглядит следующим образом:

class Frame(wx.Frame): 
    def __init__(self, parent, title): 
    wx.Frame.__init__(self, parent=parent, id=wx.ID_ANY, title=title, 
      style=(wx.DEFAULT_FRAME_STYLE | wx.WS_EX_CONTEXTHELP)^
      (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX), 
      pos=(20, 20)) 
    self.SetExtraStyle(wx.FRAME_EX_CONTEXTHELP) 
    self.createOtherStuffHere() 
    self.Show() 

Как сказать виджет, что его помощь воздушный шар должен сказать: "This button cooks spam, ham, and eggs"

ответ

3

Посмотрите в контекст классов справки

Важно отметить, что вам необходимо инициализировать поставщика справки, например.

provider = wx.SimpleHelpProvider() 
wx.HelpProvider_Set(provider) 

и установить текст справки для виджетов, например.

panel.SetHelpText("This is a wx.Panel.") 

Рабочий пример:

import wx 

class Frame(wx.Frame): 
    def __init__(self, parent, title): 
    wx.Frame.__init__(self, parent=parent, id=wx.ID_ANY, title=title, 
       style=(wx.DEFAULT_FRAME_STYLE | wx.WS_EX_CONTEXTHELP) , 
       pos=(20, 20)) 
    self.SetExtraStyle(wx.FRAME_EX_CONTEXTHELP) 
    self.CreateStatusBar() 
    self.createOtherStuffHere() 
    self.Show() 

    def createOtherStuffHere(self): 
    panel = wx.Panel(self) 
    panel.SetHelpText("This is a wx.Panel.") 

    self.label = wx.StaticText(panel, style=wx.WS_EX_CONTEXTHELP, label="Click me I may provide some help?", size=(200,30)) 
    self.label.SetHelpText("This is the help though not so helpful!") 

    self.edit = wx.TextCtrl(panel, pos=(20,50)) 
    self.edit.SetHelpText("i am a edit box") 

    self.helpButton = wx.ContextHelpButton(panel, pos=(20,100)) 

provider = wx.SimpleHelpProvider() 
wx.HelpProvider_Set(provider) 

app = wx.PySimpleApp() 
frame = Frame(None, "Test") 
app.SetTopWindow(frame) 
app.MainLoop() 
+0

Спасибо. Я отредактирую свое оригинальное сообщение, чтобы показать определение моего класса. Я также отредактирую это, чтобы сделать идею моего вопроса более ясной. – Kit

+0

Спасибо! Работает как шарм :) – Kit

Смежные вопросы