Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 24.09.2020
Сообщений: 2

Локальный чат, обновление блока с чатом

24.09.2020, 22:12. Показов 1529. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я ещё новичок и поэтому плохо разбираюсь в языке Python, поэтому прошу помощи, как можно сделать обновление окна с чатом, чтобы каждые 0.25 секунды обновлялся блок куда выводятся сообщения с чатом. Также прошу предложить идеи, как можно регистрировать, кто на данный момент находится в чате. P.S. уточняю заранее тем кто не понял, этот файл будет храниться на локальном диске и его пользователи будут заходить в него с разных компьютеров, которые находятся в этой сети.

Заранее, благодарю за помощь!

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from tkinter import *
import datetime, time
 
now = datetime.datetime.now()
 
def window_nick ():
    # Создание окна с введением ник
    windownick = Tk()
    windownick.title("Введение ника")
    windownick.resizable (0,0)
    windownick.geometry('270x110')
 
    #Введение ника пользователем
    nicklabel = Label(text='Введите ник:', font='Arial 14')
    nicklabel.place(anchor=NW, x=10, y=10)
 
    usernick = StringVar()
 
    nickentry = Entry(windownick, width=15, font='Arial 16', textvariable=usernick)
    nickentry.place(anchor=W, x=10, y=55)
 
    def next_window(): # Переход между окон Введение ника и Общий чат
        nickname = usernick.get()
        windownick.destroy()
        window_chat(nickname)
 
    nickbut = Button(windownick, text='Ввести', font='Arial 11', command=next_window)
    nickbut.place(anchor=E, x=260, y=55)
 
    windownick.mainloop()
 
 
 
def window_chat(nickname):
#
    def save_msg():
        chatlog = open("chatlog.txt", "a")
        timeuser = now.strftime("[%d.%m/%H:%M] ")
        chatlog.write(timeuser + nickname +": "+ message.get() +"\n")
        chatlog.close
        usermsg.delete(0, END)
 
    def update_chat():
        chatexit = open("chatlog.txt", "r")
        chat = chatexit.read()
        chatbox.delete(1.0, END)
        chatbox.insert(1.0, chat)
        chatexit.close()
        windowchat.after(250, update_chat)
 
# Создание окна с чатом
    windowchat = Tk()
    windowchat.title("Общий чат")
    windowchat.resizable (0,0)
    windowchat.geometry('600x400')
 
# Общий чат
    chatbox = Text(width=10, height=10, font='Arial 16')
    chatbox.place(anchor=NW, x=10, y=10, relheight=0.85, relwidth=0.92, width=1)
 
    scroll = Scrollbar(command=chatbox.yview)
    scroll.place(anchor=NE, x=590, y=10, relheight=0.85)
 
    chatbox.config(yscrollcommand=scroll.set)
    
    message = StringVar()
    usermsg = Entry(windowchat, textvariable=message, width=10, font='Arial 16')
    usermsg.place(anchor=SW, x=10, y=390, relwidth=0.80)
 
    sendmsg = Button(windowchat, text="Отправить", font='Arial 11', command=save_msg)
    sendmsg.place(anchor=SE, x=590, y=390)
 
    windowchat.after(250, update_chat)
    windowchat.mainloop()
 
window_nick()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.09.2020, 22:12
Ответы с готовыми решениями:

Обновление блока с чатом без перезагрузки страницы
Нашёл такой код: function ajaxChat() { $.ajax({ url: 'index.php', dataType :...

Локальный чат
Подскажи какие есть(вы используете) локальные чаты с сервером? Добавлено через 9 минут до 50 пользователей

Локальный чат
пишу локальный чат. столкнулся с проблемами: при коннекте к серверу клиент передаёт данные о себе(IP, Nick), которые у сервера заносятся...

3
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
25.09.2020, 15:28
Цитата Сообщение от Vovari2 Посмотреть сообщение
как можно сделать обновление окна с чатом, чтобы каждые 0.25 секунды обновлялся блок
посмотрите в сторону Tk().after
Но, читать файл 4 раза в секунду, при этом удалять всё содержимое chatbox и переписывать заново- выглядит както не очень.

Цитата Сообщение от Vovari2 Посмотреть сообщение
Также прошу предложить идеи, как можно регистрировать, кто на данный момент находится в чате.
Если уж через файлы- можно держать отдельный файлик с активными пользователями, при "логине" добалять туда ник, и удалять на выходе
0
0 / 0 / 0
Регистрация: 24.09.2020
Сообщений: 2
25.09.2020, 19:44  [ТС]
Я хотел бы уточнить, как лучше регистрировать, когда человек заходит и выходит из чата. Когда входит - это зарегистрировать и записать в файл легко, но как регистрировать выход пользователя из программы, ведь если пользователь выключит программу крестиком в верхнем правом углу. Также вдруг пользователь выключит компьютер, но запись, что пользователь в сети, останется.
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
28.09.2020, 12:09
Цитата Сообщение от Vovari2 Посмотреть сообщение
выключит программу крестиком в верхнем правом углу
это несложно ловить

Добавлено через 3 часа 20 минут
Цитата Сообщение от Vovari2 Посмотреть сообщение
Также вдруг пользователь выключит компьютер
тоже можно что нибудь придумать. Нампример, "клиент" раз в определённое время пишет служебное сообщение "heartbeat". Смотрим последнее такое и если таймаут, то признак того, что "клиент" отрубился
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.09.2020, 12:09
Помогаю со студенческими работами здесь

Локальный чат
Столкнулся с такой проблемкой ни как не могу найти компоненты для Delphi TNMMsg TNMMSGServ TNMStrm TNMStrmServ помогите пжл!

локальный чат
Здравствуйте! Мне нужен локальный чат использующий любое шифрование. Есть ли у вас примеры?

Не работает локальный чат
и так столкнулся с такой вот проблемой.Хотел сделать чат что бы и сервер мог писать сообщения клиенту и клиент серверу.Выделил ту часть...

Простой локальный чат на c#
Нужен простой многоклиентский сетевой чат, без всяких наворотов. Подкиньте плз пример.

Локальный чат + чатеры
Добрый день. У меня написан чат на UDP (Delphi 7), все работает. Но не могу ни как сообразить, как мне вывести список чатеров, то есть тех...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru