0

私は wxPython を初めて使用し、次のチュートリアルを使用していくつかの TextCtrl フィールドなどを作成しました。 http://sebsauvage.net/python/gui/#import

非常に面倒なタブボタンを使用してフィールドを切り替えることができないことを除いて、すべてが機能します。タブを使用してフィールドを切り替えることができるように、そのチュートリアルの例を (さらにいくつかの TextCtrl を追加して) 変更するにはどうすればよいでしょうか?

チュートリアルを見たくない場合は、基本的に、GridBagSizer を使用して TextCtrl の束が配置されたフレームです。

ネットで検索すると「パネルを作成する」しか見つかりませんでしたが、それを試してみましたが、wxPython を初めて使用したため、機能せず、その方法に関する完全なチュートリアルが見つかりませんでした (可能であればフレームだけで固執する...)

ありがとう!

4

2 に答える 2

1

wx.Panel をフレームに追加し、そのパネル オブジェクトを他のすべてのウィジェットの親として指定する必要があります。wx.Panel はタブ機能を追加し、すべてのプラットフォームでフレームを適切に表示します (ほとんどの場合、適切な色)。パネルがない場合、タブ移動は機能しません。

wxPython の作成者である Robin Dunn が同じことを言っているこのスレッドを参照してください: https://groups.google.com/forum/?fromgroups=#!topic/wxpython-users/gF8r_HwnOEU

于 2013-03-05T14:33:45.713 に答える
0

これは私が以前に作ったもので、あまり良くありませんが、必要に応じて追加できると思います

import os
import wx

class tab(wx.Panel):
    def __init__(self, parent, newid=0, name="New Tab", file=None, aNewTab=False):
        wx.Panel.__init__(self, parent)
        self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
        sizer = wx.BoxSizer()
        sizer.Add(self.control, -1, wx.EXPAND, newid)
        self.SetSizer(sizer)
        if file != None:
            self.control.write(file)
        else:
            pass

class MainWindow(wx.Frame):

    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(1000,900))
        self.CreateStatusBar()

        self.buttons = []

        filemenu = wx.Menu()
        helpmenu = wx.Menu()

        menuOpen = filemenu.Append(wx.ID_OPEN, "&Open", "Open a file to edit")
        menuSave = filemenu.Append(wx.ID_SAVE, "&Save", "Save the current file")
        menuSaveAs = filemenu.Append(wx.ID_SAVEAS, "&Save As", "Save the current file as")
        menuExit = filemenu.Append(wx.ID_EXIT, "E&xit", "Terminate the program")
        menuAbout = helpmenu.Append(wx.ID_ABOUT, "&About", "Information about this program,")

        menuBar = wx.MenuBar()
        menuBar.Append(filemenu, "&File") 
        menuBar.Append(helpmenu, "&Help")
        self.SetMenuBar(menuBar)

        self.openFiles = { }


        self.p = wx.Panel(self)
        self.nb = wx.Notebook(self.p)
        self.newTab = tab(self.nb)
        self.nb.AddPage(self.newTab, "New Tab")
        self.sizer = wx.BoxSizer()
        self.sizer.Add(self.nb, 1, wx.EXPAND)
        self.p.SetSizer(self.sizer)

        #new ids
        saveid = wx.NewId()
        openid = wx.NewId()
        boldid = wx.NewId()

        #Set Events
        self.Bind(wx.EVT_MENU, self.OnAbout, menuAbout)
        self.Bind(wx.EVT_MENU, self.OnExit, menuExit)
        self.Bind(wx.EVT_MENU, self.OnOpen, menuOpen)
        self.Bind(wx.EVT_MENU, self.OnSave, menuSave)
        self.Bind(wx.EVT_MENU, self.OnSave, menuSaveAs)
        # Events that are activated when buttons are pressed
        self.Bind(wx.EVT_MENU, self.OnSave, id=saveid)
        self.Bind(wx.EVT_MENU, self.OnOpen, id=openid)
        self.Bind(wx.EVT_MENU, self.OnBold, id=boldid)

        self.accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('S'), saveid),
                                              (wx.ACCEL_CTRL, ord('O'), openid),
                                              (wx.ACCEL_CTRL, ord('B'), boldid)])
        self.SetAcceleratorTable(self.accel_tbl)

        self.Show(True)

    def OnAbout(self,e):
        dlg = wx.MessageDialog(self, "A simple text editor", "About Simple Editor", wx.OK)
        dlg.ShowModal()
        dlg.Destroy()

    def OnExit(self,e):
        if self.control.IsModified:
            dlg = wx.MessageDialog(self, "If you quit now all your work will be erased. Do you still want to quit?", "Are You Sure?", wx.YES_NO | wx.ICON_QUESTION)
            a = dlg.ShowModal()
            if a == wx.ID_YES:
                self.Close(True)
            else:
                self.OnSave(self, True)

    def OnOpen(self,e):
        """
        Open a File
        """
        self.dirname = ''
        dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.FD_OPEN)
        if dlg.ShowModal() == wx.ID_OK:
            self.filename = dlg.GetFilename()
            self.dirname = dlg.GetDirectory()
            f = open(os.path.join(self.dirname, self.filename), 'r')
        newTab = tab(self.nb, name=self.filename, file=f.read(), aNewTab=True)
        self.nb.AddPage(newTab, "%s" %(self.filename))
        f.close()
        self.SetTitle("Simple Editor - %s" %(self.filename))
        dlg.Destroy()

    def OnSave(self,e, exit=False):
        """
        Save a file
        """
        #if self.newTab.control.IsEmpty():
            #dlg = wx.
        self.dirname = ''
        dlg = wx.FileDialog(self, "Where do you want to save this file?", self.dirname, "", "*.*", wx.FD_SAVE)
        if dlg.ShowModal() == wx.ID_OK:
            self.filename = dlg.GetFilename()
            self.dirname = dlg.GetDirectory()
            f = open(os.path.join(self.dirname, self.filename), 'w')
            a = str(self.control.GetValue())
            f.write(a)
            f.close()
        dlg.Destroy()
        if exit != False:
            self.Close(True)
        self.SetTitle("Simple Editor - %s" %(self.filename))

app = wx.App(False)
frame = MainWindow(None, "Simple Editor")
app.MainLoop()
于 2013-03-04T21:44:39.680 に答える