Как мне продлить статус? - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть рамка с текстовым редактором и строка состояния, которая показывает строку и столбец, в котором находится курсор. Как сделать так, чтобы при расширении строки состояния столбец строки состояния, показывающий ширину, тоже делал?

Код:

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.Status_Bar()

    def Status_Bar(self):
        #Status Bar
        self.statusbar = self.CreateStatusBar(3)
        self.SetStatusWidths([-140, 60, 140])
        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, 1)

    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 голосов
/ 04 ноября 2018

Самый простой способ - использовать поле переменной ширины для среднего элемента, который отображает номера строк и столбцов. Согласно документации ,

Существует два типа полей: поля фиксированной ширины и поля переменной ширины. Для полей фиксированной ширины необходимо указать их (постоянную) ширину в пикселях. Для полей переменной ширины укажите отрицательное число который указывает, как поле должно расширяться: пространство осталось для всех поля переменной ширины делятся между ними в соответствии с абсолютное значение этого числа. Поле переменной ширины с шириной -2 получает вдвое больше, чем поле шириной -1 и т. д.

Например, чтобы создать одно поле фиксированной ширины шириной 100 справа часть строки состояния и еще два поля, которые получают 66% и 33% соответственно, оставшееся пространство, вы должны использовать массив содержащие -2, -1 и 100.

Таким образом, если вы измените строку self.SetStatusWidths([-140, 60, 140]) на self.SetStatusWidths([-2, -1, 100]), средняя часть строки состояния, в которой отображаются цифры, будет расширяться, как описано в приведенной выше цитате.

Вы можете изменить числа, используемые в SetStatusWidths, на любое другое. self.SetStatusWidths([-1, -1, -1]) должно заставить все столбцы расширяться одинаково. self.SetStatusWidths([-1, -2, -1]) должен сделать средний столбец в два раза шире остальных. И так далее.

В основном я использую c ++, и я не эксперт по wxPython, поэтому я могу немного ошибиться в синтаксисе, но это основная идея. Я надеюсь, что это помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...