如何在wxpython应用程序的帮助下添加超链接?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在wxpython应用程序的帮助下添加超链接?相关的知识,希望对你有一定的参考价值。

我正在实现在wxPython中完成的应用程序的帮助菜单。到现在为止,我正在使用在框架中打开的txt文件。我想在帮助文本中有超链接,以便在同一帧中打开其他txt文件。但是,我不知道该怎么做。我甚至不知道这是否是实现帮助菜单最优雅的方式。任何建议都非常有用。

下面你可以找到我正在使用的部分代码(你需要一个名为“Help_Main_App.txt”的txt文件):

import wx

class Help_Frame(wx.Frame):
    title = "Help, I need somebody, help..."
    def __init__(self):
        wx.Frame.__init__(self, wx.GetApp().TopWindow, title=self.title, size=(450,500)) 
        self.CreateStatusBar()
        panel = wx.Panel(self, wx.ID_ANY)
        panel.SetBackgroundColour('#ededed')
        self.Centre()
        vBox = wx.BoxSizer(wx.VERTICAL)
        hBox = wx.BoxSizer(wx.HORIZONTAL)
        self.textbox = wx.TextCtrl(panel, style=wx.TE_MULTILINE, size=(-1, 295))
        hBox.Add(self.textbox, 1, flag=wx.EXPAND)
        vBox.Add(hBox, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=10)
        panel.SetSizer(hBox)
        defaultdir, filename = './', 'Help_Main_App.txt'
        self.filePath = '/'.join((defaultdir, filename))
        self.textbox.LoadFile(self.filePath)
        self.textbox.Disable()


class Main_Window(wx.Frame):
    def __init__(self, parent, title):
        #wx.Frame.__init__(self, parent, title = title, pos = (0, 0), size = wx.DisplaySize())
        wx.Frame.__init__(self, parent, title=title, size=(1000,780))
        self.Center()

        # Setting up the menu.
        filemenu = wx.Menu()
        helpmenu = wx.Menu()
        menuExit = filemenu.Append(wx.ID_EXIT,"&Exit"," Close window and exit program")
        menuHelp = helpmenu.Append(wx.ID_HELP, "&Help"," Help of this program")

        # Creating the menubar.
        menuBar = wx.MenuBar()
        menuBar.Append(filemenu,"&File") # Adding the "filemenu" to the MenuBar
        menuBar.Append(helpmenu,"&Help") # Adding the "helpmenu" to the MenuBar
        self.SetMenuBar(menuBar)         # Adding the MenuBar to the Frame content.

        # Set event handlers
        self.Bind(wx.EVT_MENU, self.OnHelp, menuHelp)
        self.Bind(wx.EVT_MENU, self.OnExit, menuExit)


    def OnHelp(self,e):
        Help_Frame().Show()

    def OnExit(self,e):
        self.Close(True)  # Close the frame.                

def main():
    app = wx.App(False)
    frame = Main_Window(None, "Main App")
    frame.Show()
    app.MainLoop()


if __name__ == "__main__" :
    main()
答案

我推荐使用HTMLWindow来做这样简单的事情。它只能处理简单的HTML,所以不要试图用它制作网站,因为HTMLWindow不支持CSS或javascript。

我用它写了一个简单的关于框。你可以在这里读到它:

http://www.blog.pythonlibrary.org/2008/06/11/wxpython-creating-an-about-box/

基本思想是子类化HTMLWindow并覆盖其OnLinkClicked方法。然后你可以使用Python的webbrowser来打开用户的默认浏览器。或者您可以尝试使用子进程,尽管除非您始终知道目标计算机上安装的内容,否则这样做的可能性要小得多。

另一答案

如果你能够使用wxPython 2.9.4或更高版本,那么你可以考虑使用更高级的html2 webview来支持CSS和javascript。使用此功能,您可以将帮助作为一个可以在程序中查看的简单网站。

http://wxpython.org/Phoenix/docs/html/html2.WebView.html

还值得一提的是,如果(出于一些奇怪的原因)你不想和你合作,你可以用StyledTxtCtrl实现类似的结果。

以上是关于如何在wxpython应用程序的帮助下添加超链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何在CAD中添加超链接

如何知道何时使用事件将新超链接添加到工作表

wxPython:状态栏不会在 wxToolBar 的长期帮助下更新

如何在 SWT Table 的列中添加超链接?

订阅号文章如何添加图文超链接?

如何运行wxpython