Как сделать так, чтобы статус не исчезал при нажатии на меню wxpython? - PullRequest
0 голосов
/ 14 ноября 2018

Я сделал текстовый редактор на Python со строкой состояния и меню. Когда я нажимаю на меню, текущий статус исчезает. Это часть wxPython или есть способ отключить его? Если есть способ его отключить, то как?

Заранее спасибо

import wx
import wx.stc as stc
import os

class Window(wx.Frame):
    def __init__(self, parent, title):

        wx.Frame.__init__(self, parent, title=title, size=(500, 500))
        self.control = stc.StyledTextCtrl(self, style=wx.TE_MULTILINE | wx.TE_WORDWRAP)

        self.control.Bind(wx.EVT_KEY_UP, self.LineColumn)

        self.FileMenu(), self.MenuBar()
        self.Status_Bar()

    def FileMenu(self):
        self.filemenu = wx.Menu()
        self.new = self.filemenu.Append(wx.ID_ANY, "&New\tCtrl+N")

    def MenuBar(self):
        #MenuBar
        self.menu = wx.MenuBar()
        self.menu.Append(self.filemenu, "&File")
        self.SetMenuBar(self.menu)

    def Status_Bar(self):
        #Status Bar
        self.statusbar = self.CreateStatusBar(1)
        self.LineColumn(self)

    def LineColumn(self, e):
        line = self.control.GetCurrentLine() + 1
        col = self.control.GetColumn(self.control.GetCurrentPos())
        stat = "Ln: %s, Col: %s" % (line, col)
        self.StatusBar.SetStatusText(stat, 0)

    def RandomText(self, e):
        self.StatusBar.SetStatusText("Random Text", 3)

def main():
    app = wx.App()
    frame = Window(None, "Text Editor")
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 14 ноября 2018

При нажатии на элемент меню по умолчанию вызывается событие wx.EVT_MENU_HIGHLIGHT.
Если вы пропустили пункт меню a help text, он будет отображаться в области состояния на этом этапе.
Если вы хотите обойти эту функцию, поймайте событие и обойдите его.
Попробуйте это:

def FileMenu(self):
    self.filemenu = wx.Menu()
    self.new = self.filemenu.Append(wx.ID_ANY, "&New\tCtrl+N", "Open new file")
    self.Bind(wx.EVT_MENU_HIGHLIGHT, self.Bypass)

def Bypass(self,event):
    pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...