跟踪标签绑定

时间:2018-02-12 00:22:41

标签: python tkinter

这是我正在处理的Twitter应用的简化版本。 使用此设置,我如何跟踪哪些"转发"标签用户点击了吗?

我希望转推函数返回" Id"任何" Tweet1" " Tweet2"或" Tweet3",取决于哪些"转发"标记用户点击。

任何建议都将不胜感激。

import tkinter as tk
from tkinter import ttk


class GetTweet:

    def __init__(self):

        self.tweet_list = []
        self.tweet1 = {"id": 1, "text": "tweet1"}
        self.tweet2 = {"id": 2, "text": "tweet2"}
        self.tweet3 = {"id": 3, "text": "tweet3"}
        self.tweet_list.extend([self.tweet1, self.tweet2, self.tweet3])


class Widgets:

    def __init__(self):

        self.label_list = []
        self.tweet_text_var = []

        x = 0
        for n in range(0, 6, 2):

            self.tweet_text_var.append(tk.StringVar())
            self.tweet_text = ttk.Label(root, textvariable=self.tweet_text_var[x])
            self.tweet_text.grid(column=0, row=n)
            self.label_list.append(object)
            self.label_list[x] = ttk.Label(text="Retweet", cursor="hand2")
            self.label_list[x].grid(column=0, row=n+1)
            self.label_list[x].bind("<Button-1>", retweet)

            x += 1


class PopulateVariables:

    def __init__(self):
        for n in range(0, 3):
            widgets.tweet_text_var[n].set(get_tweet.tweet_list[n].get("text"))


def retweet(event):
    print(get_tweet.tweet_list)


root = tk.Tk()
widgets = Widgets()
get_tweet = GetTweet()
populate_variable = PopulateVariables()
root.mainloop()

1 个答案:

答案 0 :(得分:1)

我刚想出来了:

将Bind更改为:

self.label_list[x].bind("<Button-1>", lambda event, ref=x: retweet(ref))

我可以通过调用:

从“转推”功能中获取相关ID
def retweet(ref):
    print(get_tweet.tweet_list[ref].get("id"))

以下是整个代码:

import tkinter as tk
from tkinter import ttk


class GetTweet:

    def __init__(self):

        self.tweet_list = []
        self.tweet1 = {"id": 1, "text": "tweet1"}
        self.tweet2 = {"id": 2, "text": "tweet2"}
        self.tweet3 = {"id": 3, "text": "tweet3"}
        self.tweet_list.extend([self.tweet1, self.tweet2, self.tweet3])


class Widgets:

    def __init__(self):

        self.label_list = []
        self.tweet_text_var = []

        x = 0
        for n in range(0, 6, 2):

            self.tweet_text_var.append(tk.StringVar())
            self.tweet_text = ttk.Label(root, 
                                        textvariable=self.tweet_text_var[x])
            self.tweet_text.grid(column=0, row=n)
            self.label_list.append(object)
            self.label_list[x] = ttk.Label(text="Retweet", cursor="hand2")
            self.label_list[x].grid(column=0, row=n+1)
            self.label_list[x].bind("<Button-1>", lambda event, ref=x: 
                                    retweet(ref))

            x += 1


class PopulateVariables:

    def __init__(self):
        for n in range(0, 3):
          widgets.tweet_text_var[n].set(get_tweet.tweet_list[n].get("text"))


def retweet(ref):
    print(get_tweet.tweet_list[ref].get("id"))



root = tk.Tk()
widgets = Widgets()
get_tweet = GetTweet()
populate_variable = PopulateVariables()
root.mainloop()