我使用 jQuery/AJAX 在 PHP 中创建了一个聊天应用程序。现在我正在尝试创建一个带有 GUI (Tkinter) 的 Python (2.7.3) 应用程序,用于查看和管理聊天。
我有一个存储用户和聊天信息的 MySQL 数据库。
在浏览器上,通过使用 setInterval 和 AJAX 调用,我可以在不刷新页面的情况下获取新消息。
在 Python 应用程序中,我使用“after”来调用一个函数来检索诸如 setInterval 之类的信息。我认为它正在工作。但是,我无法获得在浏览器上提交的新条目。
如何在不重新启动应用程序的情况下获取新提交的条目(在 Python 应用程序启动后)?
我正在使用 MySQLdb 模块来访问和更改数据库,并且正在使用 localhost。
作为我如何尝试做的一个例子,我发布了我的 get_messages 函数:
def get_messages(sohbet_id, messages_name):
messages_name.delete(1.0, END) # Remove the content of Text widget
sql = "SELECT *
FROM ileti
WHERE sohbet_id='" + str(sohbet_id) + "'
ORDER BY created ASC"
cursor.execute(sql)
result = cursor.fetchall() # Fetch all the chat info
chat = ""
for i in result:
name = chatter_name(i[1])
time = datetime.fromtimestamp(i[4]).strftime("%H:%M:%S")
chat += time + " " + str(name) + ": " + str(i[3]) + "\n" # Create a string of chat messages
messages_name.insert(END, chat) # Insert all the chat messages to the Text widget
messages_name.yview(END) # Scroll it down so that the latest message can be seen
messages_name.after(1000, lambda: get_messages(sohbet_id, messages_name)) # Run this again after 1 second
return
编辑:更多信息:我实际上是在函数中创建小部件。当应用程序启动时,只有主框架在那里,我调用一个函数来创建第一个选项卡(所有聊天的摘要),然后该函数调用另一个打开新选项卡(个人)聊天的函数。在这些单独的聊天标签中,我有这个 get_messages 函数来查询属于该聊天(或标签)的聊天消息。在上述函数中,messages_name 实际上是一个 Text 小部件。我将它传递给函数,因为我正在该函数中修改它(我找不到任何其他方式)。当调用 get_messages 时,不会出现新行。获得它们的唯一方法是重新启动应用程序。就像当应用程序启动时,它会从该实例中的数据库中获取所有数据,仅此而已。我唯一知道的是,我需要像 PHP &