2

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()
4

3 に答える 3

2

そのような単純なものには HTMLWindow を使用することをお勧めします。簡単な HTML しか扱えないので、HTMLWindow は CSS や JavaScript をサポートしていないので、それを使ってウェブサイトを作ろうとしないでください。

それを使って簡単なAboutボックスを書きました。ここでそれについて読むことができます:

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

基本的な考え方は、HTMLWindow をサブクラス化し、そのOnLinkClickedメソッドをオーバーライドすることです。次に、Python の Web ブラウザーを使用して、ユーザーの既定のブラウザーを開くことができます。または、サブプロセスを使用してみることができますが、ターゲット マシンに何がインストールされているかを常に把握していない限り、うまくいく可能性ははるかに低くなります。

于 2013-10-28T17:56:15.373 に答える
0

Mikes の回答に加えて、wxPython 2.9.4 以降を使用できる場合は、CSS と JavaScript をサポートするより高度な html2 webview の使用を検討できます。これを使用すると、プログラムで表示できる単純な Web サイトとしてヘルプを作成できます。

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

また、(何らかの奇妙な理由で) 使用したくない場合は、StyledTxtCtrl を使用して同様の結果を達成できることにも言及する価値があります。

于 2013-11-03T13:25:32.190 に答える