当前位置:   article > 正文

Python 使用tkinter实现聊天窗口界面及简单的消息发送_python tkinter 接收窗口发送消息

python tkinter 接收窗口发送消息

本文仅在于实现界面,不讨论各种消息协议,具体消息协议后期有空再行更新,谢谢。

  1. “”“
  2. # 名 称:聊天界面
  3. # 环 境:python 3.8.5(其他版本没测试,请自行测试)
  4. # 模 块:tkinter/tkinter.messagebox/pickle/json
  5. # 制 作:Q343340657(WX同号)
  6. ”“”

登录界面,效果如下:

代码如下:

  1. “”“
  2. # 名 称:聊天登录界面
  3. # 环 境:python 3.8.5(其他版本没测试,请自行测试)
  4. # 模 块:tkinter/tkinter.messagebox/pickle/json
  5. # 制 作:Q343340657(WX同号)
  6. ”“”
  7. import tkinter as tk
  8. import tkinter.messagebox
  9. import pickle
  10. import json
  11. # 窗口
  12. login_win = tk.Tk()
  13. login_win.title("聊天登录窗口")
  14. sw = login_win.winfo_screenwidth()
  15. sh = login_win.winfo_screenheight()
  16. w = 690
  17. h = 500
  18. x = (sw - w) / 2
  19. y = (sh - h) / 2
  20. login_win.geometry("%dx%d+%d+%d" % (w, h, x, y))
  21. login_win.resizable(0, 0)
  22. # 图片,自行编辑,图片大小:690x300
  23. login_benner = tk.PhotoImage(file='login_benner.png')
  24. imgLabel = tk.Label(login_win, image=login_benner)
  25. imgLabel.place(x=0, y=0)
  26. # 标签 用户密码
  27. tk.Label(login_win, text="用户名:").place(x=200, y=320)
  28. tk.Label(login_win, text="密 码:").place(x=200, y=360)
  29. # 文本框 用户名
  30. var_usr_name = tk.StringVar()
  31. entry_usr_name = tk.Entry(login_win, textvariable=var_usr_name)
  32. entry_usr_name.place(x=260, y=320)
  33. # 文本框 密码
  34. var_usr_pwd = tk.StringVar()
  35. entry_usr_pwd = tk.Entry(login_win, textvariable=var_usr_pwd, show="*")
  36. entry_usr_pwd.place(x=260, y=360)
  37. # 登录函数
  38. def usr_login():
  39. usr_name = var_usr_name.get()
  40. usr_pwd = var_usr_pwd.get()
  41. if usr_name == '111' and usr_pwd == '222':
  42. # 创建新的JSON
  43. new_usr = {
  44. 'usrname': "'" + usr_name + "'",
  45. 'age': '19'
  46. }
  47. with open('usr.json', 'w') as wp:
  48. json.dump(new_usr, wp)
  49. print(new_usr)
  50. login_win.destroy()
  51. import sx_friend_list #载入好友列表
  52. elif usr_name == '' or usr_pwd == '':
  53. tk.messagebox.showerror(message="用户名密码不能为空")
  54. else:
  55. tk.messagebox.showerror(message="用户名密码错误!")
  56. # 登录
  57. bt_login = tk.Button(login_win, text="登录(Login)", command=usr_login)
  58. bt_login.place(x=202, y=400)
  59. bt_quit = tk.Button(login_win, text="退出(Exit)")
  60. bt_quit.place(x=350, y=400)
  61. # 提示标签
  62. tsLabel = tk.Label(login_win,
  63. text="聊天登录界面 for Python Tkinter",
  64. fg="red")
  65. tsLabel.pack(side=tk.BOTTOM, expand='yes', anchor='se')
  66. login_win.mainloop()

好友界面,效果如下:

代码如下:

  1. #!/usr/bin/python
  2. # encoding=utf8
  3. “”“
  4. # 名 称:聊天好友界面
  5. # 环 境:python 3.8.5(其他版本没测试,请自行测试)
  6. # 模 块:tkinter/tkinter.messagebox/pickle/json
  7. # 制 作:Q343340657(WX同号)
  8. ”“”
  9. import tkinter as tk
  10. from tkinter import ttk
  11. import pickle
  12. import json
  13. with open('usr.json', 'r') as fp:
  14. json_file = json.load(fp)
  15. json_str = json.dumps(json_file)
  16. json_date = json.loads(json_str)
  17. json_name = json_date['usrname']
  18. print(json_name)
  19. fri_win = tk.Tk()
  20. fri_win.title("[" + json_name + "] - 聊天界面 for Linux Bate")
  21. # usrname = usr_name
  22. # 聊天界面大小
  23. w = 320
  24. h = 800
  25. sw = fri_win.winfo_screenwidth()
  26. sh = fri_win.winfo_screenheight()
  27. x = 200
  28. y = (sh - h) / 2
  29. fri_win.geometry("%dx%d+%d+%d" % (w, h, x, y))
  30. fri_win.resizable(0, 0)
  31. # 创建树形列表
  32. fri_list = ttk.Treeview(fri_win, height=39, show="tree")
  33. fri_list.place(x=10, y=30)
  34. # 好友分组
  35. # 1
  36. fri_tree1 = fri_list.insert('', 0, 'frist', text='家人', values=("1"))
  37. fri_tree1_1 = fri_list.insert(fri_tree1, 0, '001', text='老婆', values=("2"))
  38. fri_tree1_2 = fri_list.insert(fri_tree1, 1, '002', text='女朋友001', values=("3"))
  39. fri_tree2 = fri_list.insert('', 1, 'second', text='同事', values=("4"))
  40. fri_tree2_1 = fri_list.insert(fri_tree2, 0, 'admin', text='女朋友002', values=("5"))
  41. fri_tree2_2 = fri_list.insert(fri_tree2, 1, 'testadmin', text='女朋友003', values=("6"))
  42. # 好友列表双击事件
  43. def double_selected(event):
  44. for item in fri_list.selection():
  45. item_text = fri_list.item(item, "text")
  46. chat_usr = {
  47. 'usrname': "'" + json_name + "'",
  48. 'age': '19',
  49. 'chatname': "'" + item_text + "'"
  50. }
  51. with open('usr.json', 'w') as wf:
  52. json.dump(chat_usr, wf)
  53. import sx_chat_win
  54. print(item_text)
  55. fri_list.bind('<Double-1>', double_selected)
  56. fri_list.pack(expand=True, fill=tk.X)
  57. # 好友按钮
  58. fri_btn = tk.Button(text="好友")
  59. fri_btn.place(x=10, y=2)
  60. # 群按钮
  61. cla_btn = tk.Button(text="群聊")
  62. cla_btn.place(x=70, y=2)
  63. # 添加好友
  64. into_fri_btn = tk.Button(text="添加好友")
  65. into_fri_btn.place(x=130, y=2)
  66. # 搜索好友
  67. l1 = tk.Label(text="查找好友:")
  68. l1.place(x=10, y=771)
  69. # 搜索框
  70. e1 = tk.Entry(width=12)
  71. e1.place(x=80, y=770)
  72. # 搜索按钮
  73. search_btn = tk.Button(text="搜索")
  74. search_btn.place(x=190, y=770)
  75. # 菜单
  76. menu_btn = tk.Button(text="设置")
  77. menu_btn.place(x=256, y=770)
  78. fri_win.mainloop()

聊天界面,效果如下:

代码如下:

  1. #!/usr/bin/python
  2. # encoding=utf8
  3. “”“
  4. # 名 称:聊天消息界面
  5. # 环 境:python 3.8.5(其他版本没测试,请自行测试)
  6. # 模 块:tkinter/tkinter.messagebox/pickle/json
  7. # 制 作:Q343340657(WX同号)
  8. ”“”
  9. import tkinter as tk
  10. import time
  11. # 发送消息
  12. def sendMsg():
  13. t1_Msg.configure(state=tk.NORMAL)
  14. strMsg = "我:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '\n'
  15. t1_Msg.insert("end", strMsg, 'green')
  16. sendMsg = t2_sendMsg.get('0.0', 'end')
  17. t1_Msg.insert("end", sendMsg)
  18. t2_sendMsg.delete('0.0', "end")
  19. t1_Msg.config(state=tk.DISABLED)
  20. print(strMsg + sendMsg)
  21. # 创建窗口
  22. app = tk.Tk()
  23. app.title('与python聊天')
  24. #
  25. w = 800
  26. h = 660
  27. sw = app.winfo_screenwidth()
  28. sh = app.winfo_screenheight()
  29. x = 200
  30. y = (sh - h) / 2
  31. app.geometry("%dx%d+%d+%d" % (w, h, x, y))
  32. app.resizable(0, 0)
  33. # 远程按钮
  34. desktop_btn = tk.Button(text="远程协助")
  35. desktop_btn.place(x=700, y=2)
  36. # 聊天消息预览窗口
  37. t1_Msg = tk.Text(width=113, height=32)
  38. t1_Msg.tag_config('green', foreground='#008C00') # 创建tag
  39. t1_Msg.place(x=2, y=35)
  40. # t1_Msg.config(state=tk.DISABLED)
  41. # t1_Msg.configure(state='disabled')
  42. # 聊天消息发送
  43. t2_sendMsg = tk.Text(width=112, height=10)
  44. t2_sendMsg.place(x=2, y=485)
  45. # 表情按钮
  46. face_btn = tk.Button(text="表情")
  47. face_btn.place(x=2, y=457)
  48. # 文件按钮
  49. face_btn = tk.Button(text="文件传送")
  50. face_btn.place(x=62, y=457)
  51. # 截图按钮
  52. prtscr_btn = tk.Button(text="截图")
  53. prtscr_btn.place(x=150, y=457)
  54. # 聊天记录查询
  55. chat_search = tk.Button(text="查找")
  56. chat_search.place(x=210, y=457)
  57. # 语音按钮
  58. chat_search = tk.Button(text="语音")
  59. chat_search.place(x=660, y=457)
  60. # 视频按钮
  61. chat_search = tk.Button(text="视频")
  62. chat_search.place(x=720, y=457)
  63. # 发送按钮
  64. sendMsg_btn = tk.Button(text="发送(Send)", command=sendMsg)
  65. sendMsg_btn.place(x=665, y=628)
  66. # 主事件循环
  67. app.mainloop()

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/124900
推荐阅读
相关标签
  

闽ICP备14008679号