Advertisement
Mondegrin

messenger

Jun 30th, 2025
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.89 KB | Source Code | 0 0
  1. import sys
  2. from sys import argv
  3. from typing import Self
  4.  
  5. from PySide6.QtWidgets import (
  6.     QApplication,
  7.     QComboBox,
  8.     QLabel,
  9.     QLineEdit,
  10.     QVBoxLayout,
  11.     QWidget,
  12. )
  13.  
  14.  
  15. class MainWindow(QWidget):
  16.     def __init__(self: Self) -> None:
  17.         super().__init__()
  18.  
  19.         self.messages = {
  20.             "chat_1": [],
  21.             "chat_2": [],
  22.             "chat_3": [],
  23.         }
  24.  
  25.         self.chat_selection = QComboBox()
  26.         self.chat_selection.addItems(tuple(self.messages.keys()))
  27.         self.chat_selection.currentTextChanged.connect(self.select_chat)
  28.  
  29.         self.messages_layout = QVBoxLayout()
  30.  
  31.         self.message_input = QLineEdit()
  32.         self.message_input.returnPressed.connect(self.send_message)
  33.  
  34.         layout = QVBoxLayout()
  35.         layout.addWidget(self.chat_selection)
  36.         layout.addLayout(self.messages_layout)
  37.         layout.addWidget(self.message_input)
  38.         self.setLayout(layout)
  39.  
  40.     def select_chat(self: Self) -> None:
  41.         chat_name = self.chat_selection.currentText()
  42.  
  43.         for i in reversed(range(self.messages_layout.count())):
  44.             widget = self.messages_layout.itemAt(i).widget()
  45.             self.messages_layout.removeWidget(widget)
  46.             widget.deleteLater()
  47.  
  48.         for message in self.messages[chat_name]:
  49.             self.messages_layout.addWidget(QLabel(message))
  50.  
  51.     def send_message(self: Self) -> None:
  52.         message = self.message_input.text()
  53.         if message == "":
  54.             return
  55.         self.message_input.clear()
  56.  
  57.         chat_name = self.chat_selection.currentText()
  58.         self.messages[chat_name].append(message)
  59.         self.messages_layout.addWidget(QLabel(message))
  60.  
  61.  
  62. def main() -> int:
  63.     application = QApplication(argv)
  64.     main_window = MainWindow()
  65.     main_window.show()
  66.     return application.exec()
  67.  
  68.  
  69. if __name__ == "__main__":
  70.     sys.exit(main())
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement