*私は英語があまりよくありません。 私の厄介な英語を理解してください。tkinterテキストエディタ行カウンタ
こんにちは!
私はテキストエディタを作っています。
しかし、私は
ので、私はテキスト行カウンタを作ることにしたい...より完璧なものにしたいです。 このLook:
私はこの機能を使用するには何ができるのでしょうか?
class main:
def __init__(self,master):
(skip)
self.__class__.editors.append(self)
self.lineNumbers = ''
self.frame = Frame(master, bd=2, relief=SUNKEN)
self.lnText = Text(self.frame,
width = 4,
padx = 4,
highlightthickness = 0,
takefocus = 0,
bd = 0,
background = 'lightgrey',
foreground = 'magenta',
state='disabled'
)
self.lnText.pack(side=LEFT, fill='y')
if self.__class__.updateId is None:
self.updateAllLineNumbers()
def getLineNumbers(self):
x = 0
line = '0'
col= ''
ln = ''
# assume each line is at least 6 pixels high
step = 6
nl = '\n'
lineMask = ' %s\n'
indexMask = '@0,%d'
for i in range(0, self.editor.winfo_height, step):
ll, cc = self.editor.index(indexMask % i).split('.')
if line == ll:
if col != cc:
col = cc
ln += nl
else:
line, col = ll, cc
ln += (lineMask % line)[-5:]
return ln
def updateLineNumbers(self):
tt = self.lnText
ln = self.getLineNumbers()
if self.lineNumbers != ln:
self.lineNumbers = ln
tt.config(state='normal')
tt.delete('1.0', END)
tt.insert('1.0', self.lineNumbers)
tt.config(state='disabled')
@classmethod
def updateAllLineNumbers(cls):
if len(cls.editors) < 1:
cls.updateId = None
return
for ed in cls.editors:
ed.updateLineNumbers()
cls.updateId = ed.text.after(
cls.UPDATE_PERIOD,
cls.updateAllLineNumbers)
完全なソースコードのダウンロード - >http://blog.naver.com/tdh8316/220854695216
このコードは、エラーが発生しました。
エラーメッセージは
...
Traceback (most recent call last):
File "G:\_#Project\_Editor\py\TextMate\TextMate\TextMate.py", line 547, in <module>
runMainWindow() # Run MainWindow Class
File "G:\_#Project\_Editor\py\TextMate\TextMate\TextMate.py", line 543, in runMainWindow
app = MainWindow(root)
File "G:\_#Project\_Editor\py\TextMate\TextMate\TextMate.py", line 68, in __init__
self.updateAllLineNumbers()
File "G:\_#Project\_Editor\py\TextMate\TextMate\TextMate.py", line 532, in updateAllLineNumbers
ed.updateLineNumbers()
File "G:\_#Project\_Editor\py\TextMate\TextMate\TextMate.py", line 516, in updateLineNumbers
ln = self.getLineNumbers()
File "G:\_#Project\_Editor\py\TextMate\TextMate\TextMate.py", line 499, in getLineNumbers
for i in range(0, self.editor.winfo_height, step):
TypeError: 'method' object cannot be interpreted as an integer
なぜエラー原因でしょうか?
「メソッドオブジェクト」とは何ですか?
私は英語をうまく話せません。申し訳ありません、
完全なソースコード:http://blogattach.naver.com/60f57cccdc8184587695fbc6fe196519bae012f5d8/20161106_97_blogfile/tdh8316_1478408090149_A7lwVg_py/TextMate.py?type=attachment – tdh8316
'self.editor.winfo_height'が関数であります。その関数の結果を望むなら、 'self.editor.winfo_height()'と呼ぶ必要があります。 –
ありがとうございました!しかし、他の場所でエラーが発生する...まだ私はこれを解決します.......! :-) – tdh8316