我有一个问题,我尝试在输入时读取当前行...问题是我得到的输出实际上不是它应该是什么......
以下是该计划的结构。
" KEY_PRESS"函数是问题依赖的部分。
from tkinter import *
import keyword
### TEXT EDITOR WIDGET
class TextEditor(Text):
# TAGS
tags = {"int": "red"}
### Init
def __init__(self, root):
Text.__init__(self, root)
self.bind("<Key>", self.key_press)
self.bind("<Button-1>", self.key_press)
### Add tags
def congif_tags(self):
for tag, val in self.tags.items():
self.tag_config(tag, foreground=val)
### Remove tags
def remove_tags(self, start, end):
for tag in self.tags.keys():
self.tag_remove(tag, start, end)
### On keyboard press event
def key_press(self, key):
current_line = self.index(INSERT)
current_line = current_line.split(".")
current_line = current_line[0]
line_break = 0
line_text = ""
char = self.get("%s.%d" % (current_line, line_break ))
while char != "\n":
line_break += 1
char = self.get("%s.%d" % (current_line, line_break))
line_text += char
print(line_text)
答案 0 :(得分:2)
问题可能是由于您的绑定在Tkinter有机会处理事件之前发生。因此,你总是背后的一个关键点。尝试将绑定添加到密钥发布。或者,您可以使用绑定标记来安排绑定在默认绑定后触发。
稍微不相关的说明:你似乎试图获得该行的最后一个字符。那是对的吗?你可以通过这样的方式获得整条线:
line_text = self.index("insert linestart", "insert lineend")