跟踪标签绑定

2024-04-24 05:44:13 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我正在开发的Twitter应用程序的简化版本。 使用此设置,如何跟踪用户单击的“转发”标签

我希望retweet函数返回“Id”为“Tweet1”、“Tweet2”或“Tweet3”,具体取决于用户单击的“retweet”标签

如有任何建议,将不胜感激

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()

Tags: textselfidgetinitvardeflabel
1条回答
网友
1楼 · 发布于 2024-04-24 05:44:13

我刚想出来:

通过将绑定更改为:

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

我可以通过调用“retweet”函数获取相关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()

相关问题 更多 >