这是我正在处理的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()
答案 0 :(得分:1)
我刚想出来了:
将Bind更改为:
self.label_list[x].bind("<Button-1>", lambda event, ref=x: retweet(ref))
我可以通过调用:
从“转推”功能中获取相关IDdef 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()