首页 > 解决方案 > tkinter 中的绑定问题

问题描述

之前问过这个问题,但我不清楚我在问什么。写了一个小程序,基本上是打开一个文本域,插入三行数据。

通过 while 循环为每一行添加了一个标签。

当我尝试通过循环向标签添加绑定时 - 没有任何反应,程序根本没有响应。如果我对每个键绑定进行硬编码,它就像一个魅力。

我究竟做错了什么?希望我在这里输入代码时没有弄乱缩进

#!/usr/bin/en python
# *-* coding: utf-8 *-*

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.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)
            self.tekstfelt.tag_add(setning, pos, pos2)
            #self.tekstfelt.tag_bind(setning, "<Button-1>", lambda start:self.utskrift2(start))
            posisjon += 1
            start += 1
        tagger = self.tekstfelt.tag_names()
        start = 1
        indeks = 0
        b = len(tagger)
        while start < b:
            self.tekstfelt.tag_bind(tagger[start], "<Button-1>", lambda indeks: self.utskrift2(indeks))
            indeks += 1
            start += 1

    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 event == 3:
            print("Taggen til fjerde linjen")


if __name__ == "__main__":
    start = Tk()
    guidelen(start)
    start.mainloop()

标签: tkintertextbind

解决方案


推荐阅读