我在 tkinter 模块中的文本小部件上遇到了一些困难。
我添加了尝试将函数绑定到的标签。
无论我如何输入,它都会发生以下两种情况之一。我可以单击文本小部件,但弹出的唯一功能是最后一个项目,无论我单击何处。第二件事是它会自动输出所有功能。
对原始帖子进行了编辑并删除了我输入的编码。此处进行了与原始编码中相同的函数调用(此处不必要的代码少了 15k):
#!/usr/bin/en python
# *-* coding: utf-8 *-*
import platform as platform
from tkinter import *
class guidelen:
def __init__(self, master):
self.master = master
self.master.title("programmet")
self.master.geometry("400x400")
self.populate()
def populate(self):
self.meny = Menu(self.master, tearoff=0)
self.startmeny = Menu(self.meny, tearoff=0)
self.startmeny.add_command(label="Avslutt",command=self.master.quit)
self.meny.add_cascade(label="Start", menu=self.startmeny)
self.master.config(menu=self.meny)
self.tekstfelt = Text(self.master)
self.tekstfelt.pack(fill=BOTH, expand=True)
setninger = ["første setningen","andre setningen","tredje setningen"]
start = 0
posisjon = 1
while start < len(setninger):
pos = str(posisjon) + ".0"
b = len(setninger[start])
pos2 = str(posisjon) +"."+ str(b)
setning = setninger[start] + "\n"
self.tekstfelt.insert(pos, setning)
setning.replace("\n","")
self.tekstfelt.tag_add(setning, pos, pos2)
self.tekstfelt.tag_bind(setning, "<Button-1>", self.utskrift2(start))
print(start)
posisjon += 1
start += 1
def utskrift(self, event):
print("Prøver tag bindingen")
def utskrift2(self, event):
if event == 0:
print("Taggen til første linjen")
if event == 1:
print("Taggen til andre linjen")
if event == 2:
print("Taggen til tredje linjen")
if __name__ == "__main__":
start = Tk()
guidelen(start)
start.mainloop()
因此,无论我如何更改该函数,它总是对文本小部件中的所有项目提供相同的绑定,或者它只是自动喷出所有绑定/函数调用。
有人知道我做错了什么吗?