After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 2.7 MiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 96 KiB |
@ -0,0 +1,120 @@
|
||||
#当部署到别的计算机时手动改修改PORT 和 ADDR
|
||||
|
||||
import socket
|
||||
import json
|
||||
import rsa
|
||||
from binascii import hexlify
|
||||
import os
|
||||
import threading
|
||||
import sys
|
||||
from PyQt5.QtCore import QObject , pyqtSignal
|
||||
|
||||
class Client(QObject):
|
||||
DISCONNECT_MESSAGE = "!DISCONNECT"
|
||||
send_data_Signal = pyqtSignal(dict)
|
||||
send_userlist_Signal = pyqtSignal(dict)
|
||||
def __init__(self,parent=None):
|
||||
super(Client,self).__init__(parent)
|
||||
IP = socket.gethostbyname(socket.gethostname())
|
||||
PORT = 1
|
||||
ADDR = (IP, PORT)
|
||||
self.ADDR = ADDR
|
||||
self.username = ""
|
||||
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.active_users = {}
|
||||
self.dict={}
|
||||
def disconnection(self):
|
||||
data = {"sender": self.username, "receiver": "disconnect", "msg": self.DISCONNECT_MESSAGE}
|
||||
self.client.send(json.dumps(data).encode())
|
||||
|
||||
def set_username(self,username,password):
|
||||
self.username = username
|
||||
print("set user name")
|
||||
print(self.username)
|
||||
|
||||
|
||||
def send_broadcast(self):
|
||||
print("start broadcast!")
|
||||
print(self.active_users)
|
||||
print("activeuser")
|
||||
for receiver in self.active_users:
|
||||
|
||||
print(receiver)
|
||||
self.send(receiver)
|
||||
|
||||
|
||||
def send(self,receiver):
|
||||
#data = {"sender": self.username, "receiver": receiver, "msg": msg.decode(),"startdatetime":startdatetime,"enddatetime":enddatetime}
|
||||
data = self.dict
|
||||
data["receiver"] = receiver
|
||||
if receiver in self.active_users.keys():
|
||||
self.client.send(json.dumps(data).encode())
|
||||
|
||||
def update_users(self, users):
|
||||
#******这里是全体学员信号更新
|
||||
self.send_userlist_Signal.emit(users)
|
||||
del users[self.username]
|
||||
self.active_users = users
|
||||
|
||||
def init_data(self):
|
||||
data = {"username": self.username}
|
||||
self.client.send(json.dumps(data).encode())
|
||||
|
||||
def listen(self):
|
||||
self.init_data()
|
||||
while True:
|
||||
data = self.client.recv(1024).decode()
|
||||
data = json.loads(data)
|
||||
if "users" in data.keys():
|
||||
self.update_users(data["users"])
|
||||
print("update user!!!!!!!")
|
||||
print(data["users"])
|
||||
else:
|
||||
msg = data["msg"]
|
||||
if msg == "DISCONNECTING":
|
||||
print("disconnect!")
|
||||
break
|
||||
#*******接收到信息更新列表
|
||||
self.send_data_Signal.emit(data)
|
||||
print(f"\n[NEW MESSAGE VERIFIED] {data['sender']}: \nMessage: {msg}", end="")
|
||||
|
||||
|
||||
def receive_from_ui(self,dict):
|
||||
#dict.update({{"sender": self.username}})
|
||||
dict["sender"]=self.username
|
||||
print("receive_from_ui:")
|
||||
print(dict)
|
||||
self.dict = dict
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
print("client runing!")
|
||||
print("username:"+self.username)
|
||||
print(f"[CONNECTION] Starting connection to {self.ADDR}")
|
||||
|
||||
self.client.connect(self.ADDR)
|
||||
thread = threading.Thread(target=self.listen)
|
||||
thread.start()
|
||||
|
||||
#self.run_step()
|
||||
except Exception as e:
|
||||
pass
|
||||
def run_step(self):
|
||||
try:
|
||||
receiver = self.dict["receiver"]
|
||||
if receiver == "broadcast":
|
||||
self.send_broadcast()
|
||||
else:
|
||||
self.send(receiver)
|
||||
except:
|
||||
print("run_step erro!")
|
||||
|
||||
"""
|
||||
IP = socket.gethostbyname(socket.gethostname())
|
||||
PORT = 1
|
||||
ADDR = (IP, PORT)
|
||||
|
||||
username = input("Insert username: ")
|
||||
client = Client(ADDR, username)
|
||||
client.run()
|
||||
"""
|
@ -0,0 +1,56 @@
|
||||
import socket
|
||||
import threading
|
||||
import pyaudio
|
||||
|
||||
|
||||
class Client_voice_cmd:
|
||||
def __init__(self):
|
||||
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
while 1:
|
||||
try:
|
||||
self.target_ip = socket.gethostbyname(socket.gethostname())
|
||||
self.target_port = 2
|
||||
|
||||
self.s.connect((self.target_ip, self.target_port))
|
||||
|
||||
break
|
||||
except:
|
||||
print("Couldn't connect to server")
|
||||
|
||||
chunk_size = 1024 # 512
|
||||
audio_format = pyaudio.paInt16
|
||||
channels = 1
|
||||
rate = 20000
|
||||
|
||||
# initialise microphone recording
|
||||
self.p = pyaudio.PyAudio()
|
||||
self.playing_stream = self.p.open(format=audio_format, channels=channels, rate=rate, output=True,
|
||||
frames_per_buffer=chunk_size)
|
||||
self.recording_stream = self.p.open(format=audio_format, channels=channels, rate=rate, input=True,
|
||||
frames_per_buffer=chunk_size)
|
||||
|
||||
print("Connected to Server")
|
||||
|
||||
# start threads
|
||||
receive_thread = threading.Thread(target=self.receive_server_data).start()
|
||||
self.send_data_to_server()
|
||||
|
||||
def receive_server_data(self):
|
||||
while True:
|
||||
try:
|
||||
data = self.s.recv(1024)
|
||||
self.playing_stream.write(data) # write就是播放数据
|
||||
except:
|
||||
pass
|
||||
|
||||
def send_data_to_server(self):
|
||||
while True:
|
||||
try:
|
||||
data = self.recording_stream.read(1024) # read就是写回数据
|
||||
self.s.sendall(data)
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
#client = Client_voice_cmd()
|
@ -0,0 +1,56 @@
|
||||
import socket
|
||||
import threading
|
||||
import pyaudio
|
||||
|
||||
|
||||
class Client_voice_stu:
|
||||
def __init__(self):
|
||||
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
while 1:
|
||||
try:
|
||||
self.target_ip = socket.gethostbyname(socket.gethostname())
|
||||
self.target_port = 2
|
||||
|
||||
self.s.connect((self.target_ip, self.target_port))
|
||||
|
||||
break
|
||||
except:
|
||||
print("Couldn't connect to server")
|
||||
|
||||
chunk_size = 1024 # 512
|
||||
audio_format = pyaudio.paInt16
|
||||
channels = 1
|
||||
rate = 20000
|
||||
|
||||
# initialise microphone recording
|
||||
self.p = pyaudio.PyAudio()
|
||||
self.playing_stream = self.p.open(format=audio_format, channels=channels, rate=rate, output=True,
|
||||
frames_per_buffer=chunk_size)
|
||||
self.recording_stream = self.p.open(format=audio_format, channels=channels, rate=rate, input=True,
|
||||
frames_per_buffer=chunk_size)
|
||||
|
||||
print("Connected to Server")
|
||||
|
||||
# start threads
|
||||
receive_thread = threading.Thread(target=self.receive_server_data).start()
|
||||
#self.send_data_to_server()
|
||||
|
||||
def receive_server_data(self):
|
||||
while True:
|
||||
try:
|
||||
data = self.s.recv(1024)
|
||||
self.playing_stream.write(data) # write就是播放数据
|
||||
except:
|
||||
pass
|
||||
|
||||
def send_data_to_server(self):
|
||||
while True:
|
||||
try:
|
||||
data = self.recording_stream.read(1024) # read就是写回数据
|
||||
self.s.sendall(data)
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
#client = Client_voice_stu()
|
@ -0,0 +1,652 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'cmd_send_msg.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.2
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
import sys
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
from PyQt5.QtGui import *
|
||||
from PyQt5.QtWidgets import *
|
||||
from PyQt5.QtCore import QDate, QDateTime , QTime
|
||||
from PyQt5.QtCore import pyqtSignal,QObject
|
||||
import datetime
|
||||
|
||||
|
||||
|
||||
class Ui_Main_cmd_msg(QMainWindow):
|
||||
send_data_Signal = pyqtSignal(dict)
|
||||
send_voice_data_Signal = pyqtSignal()
|
||||
table_row = 0
|
||||
def setupUi(self, Main_cmd_msg):
|
||||
Main_cmd_msg.setObjectName("Main_cmd_msg")
|
||||
Main_cmd_msg.resize(1011, 866)
|
||||
self.centralwidget = QtWidgets.QWidget(Main_cmd_msg)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
|
||||
self.tabWidget.setGeometry(QtCore.QRect(20, 60, 991, 731))
|
||||
self.tabWidget.setMouseTracking(False)
|
||||
self.tabWidget.setTabPosition(QtWidgets.QTabWidget.North)
|
||||
self.tabWidget.setTabShape(QtWidgets.QTabWidget.Triangular)
|
||||
self.tabWidget.setElideMode(QtCore.Qt.ElideNone)
|
||||
self.tabWidget.setDocumentMode(False)
|
||||
self.tabWidget.setTabsClosable(False)
|
||||
self.tabWidget.setMovable(False)
|
||||
self.tabWidget.setTabBarAutoHide(False)
|
||||
self.tabWidget.setObjectName("tabWidget")
|
||||
self.tab_3 = QtWidgets.QWidget()
|
||||
self.tab_3.setObjectName("tab_3")
|
||||
self.layoutWidget = QtWidgets.QWidget(self.tab_3)
|
||||
self.layoutWidget.setGeometry(QtCore.QRect(10, 10, 171, 261))
|
||||
self.layoutWidget.setObjectName("layoutWidget")
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
|
||||
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.radioButton_gb = QtWidgets.QRadioButton(self.layoutWidget)
|
||||
self.radioButton_gb.setObjectName("radioButton_gb")
|
||||
self.verticalLayout.addWidget(self.radioButton_gb)
|
||||
self.radioButton_db = QtWidgets.QRadioButton(self.layoutWidget)
|
||||
self.radioButton_db.setObjectName("radioButton_db")
|
||||
self.verticalLayout.addWidget(self.radioButton_db)
|
||||
self.radioButton_dsbb = QtWidgets.QRadioButton(self.layoutWidget)
|
||||
self.radioButton_dsbb.setObjectName("radioButton_dsbb")
|
||||
self.verticalLayout.addWidget(self.radioButton_dsbb)
|
||||
self.textEdit = QtWidgets.QTextEdit(self.tab_3)
|
||||
self.textEdit.setGeometry(QtCore.QRect(370, 300, 441, 271))
|
||||
self.textEdit.setObjectName("textEdit")
|
||||
self.layoutWidget_2 = QtWidgets.QWidget(self.tab_3)
|
||||
self.layoutWidget_2.setGeometry(QtCore.QRect(360, 140, 445, 131))
|
||||
self.layoutWidget_2.setObjectName("layoutWidget_2")
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget_2)
|
||||
self.gridLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.dateTimeEdit = QtWidgets.QDateTimeEdit(self.layoutWidget_2)
|
||||
self.dateTimeEdit.setObjectName("dateTimeEdit")
|
||||
self.gridLayout.addWidget(self.dateTimeEdit, 2, 1, 1, 1)
|
||||
self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget_2)
|
||||
self.pushButton_2.setObjectName("pushButton_2")
|
||||
self.gridLayout.addWidget(self.pushButton_2, 2, 2, 1, 1)
|
||||
self.pushButton = QtWidgets.QPushButton(self.layoutWidget_2)
|
||||
self.pushButton.setObjectName("pushButton")
|
||||
self.gridLayout.addWidget(self.pushButton, 1, 2, 1, 1)
|
||||
self.label_3 = QtWidgets.QLabel(self.layoutWidget_2)
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.gridLayout.addWidget(self.label_3, 1, 0, 1, 1)
|
||||
self.label = QtWidgets.QLabel(self.layoutWidget_2)
|
||||
self.label.setObjectName("label")
|
||||
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
|
||||
self.lineEdit = QtWidgets.QLineEdit(self.layoutWidget_2)
|
||||
self.lineEdit.setObjectName("lineEdit")
|
||||
self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 2)
|
||||
self.dateTimeEdit_2 = QtWidgets.QDateTimeEdit(self.layoutWidget_2)
|
||||
self.dateTimeEdit_2.setObjectName("dateTimeEdit_2")
|
||||
self.gridLayout.addWidget(self.dateTimeEdit_2, 1, 1, 1, 1)
|
||||
self.label_2 = QtWidgets.QLabel(self.layoutWidget_2)
|
||||
self.label_2.setObjectName("label_2")
|
||||
self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
|
||||
self.label_7 = QtWidgets.QLabel(self.layoutWidget_2)
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.gridLayout.addWidget(self.label_7, 3, 0, 1, 1)
|
||||
self.dateTimeEdit_3 = QtWidgets.QDateTimeEdit(self.layoutWidget_2)
|
||||
self.dateTimeEdit_3.setObjectName("dateTimeEdit_3")
|
||||
self.gridLayout.addWidget(self.dateTimeEdit_3, 3, 1, 1, 1)
|
||||
self.pushButton_4 = QtWidgets.QPushButton(self.layoutWidget_2)
|
||||
self.pushButton_4.setObjectName("pushButton_4")
|
||||
self.gridLayout.addWidget(self.pushButton_4, 3, 2, 1, 1)
|
||||
self.layoutWidget_4 = QtWidgets.QWidget(self.tab_3)
|
||||
self.layoutWidget_4.setGeometry(QtCore.QRect(370, 570, 441, 91))
|
||||
self.layoutWidget_4.setObjectName("layoutWidget_4")
|
||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.layoutWidget_4)
|
||||
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||
self.pushButton_send_1 = QtWidgets.QPushButton(self.layoutWidget_4)
|
||||
self.pushButton_send_1.setObjectName("pushButton_send_1")
|
||||
self.horizontalLayout_2.addWidget(self.pushButton_send_1)
|
||||
self.pushButton_3 = QtWidgets.QPushButton(self.layoutWidget_4)
|
||||
self.pushButton_3.setObjectName("pushButton_3")
|
||||
self.horizontalLayout_2.addWidget(self.pushButton_3)
|
||||
self.label_4 = QtWidgets.QLabel(self.tab_3)
|
||||
self.label_4.setGeometry(QtCore.QRect(270, 290, 72, 51))
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.gridLayoutWidget = QtWidgets.QWidget(self.tab_3)
|
||||
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 370, 261, 171))
|
||||
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
|
||||
self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget)
|
||||
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
|
||||
self.gridLayout_2.setObjectName("gridLayout_2")
|
||||
self.checkBox_2 = QtWidgets.QCheckBox(self.gridLayoutWidget)
|
||||
self.checkBox_2.setObjectName("checkBox_2")
|
||||
self.gridLayout_2.addWidget(self.checkBox_2, 0, 1, 1, 1)
|
||||
self.checkBox_6 = QtWidgets.QCheckBox(self.gridLayoutWidget)
|
||||
self.checkBox_6.setObjectName("checkBox_6")
|
||||
self.gridLayout_2.addWidget(self.checkBox_6, 1, 2, 1, 1)
|
||||
self.checkBox_7 = QtWidgets.QCheckBox(self.gridLayoutWidget)
|
||||
self.checkBox_7.setObjectName("checkBox_7")
|
||||
self.gridLayout_2.addWidget(self.checkBox_7, 2, 0, 1, 1)
|
||||
self.checkBox_9 = QtWidgets.QCheckBox(self.gridLayoutWidget)
|
||||
self.checkBox_9.setObjectName("checkBox_9")
|
||||
self.gridLayout_2.addWidget(self.checkBox_9, 2, 2, 1, 1)
|
||||
self.checkBox_5 = QtWidgets.QCheckBox(self.gridLayoutWidget)
|
||||
self.checkBox_5.setObjectName("checkBox_5")
|
||||
self.gridLayout_2.addWidget(self.checkBox_5, 1, 1, 1, 1)
|
||||
self.checkBox_4 = QtWidgets.QCheckBox(self.gridLayoutWidget)
|
||||
self.checkBox_4.setObjectName("checkBox_4")
|
||||
self.gridLayout_2.addWidget(self.checkBox_4, 1, 0, 1, 1)
|
||||
self.checkBox_8 = QtWidgets.QCheckBox(self.gridLayoutWidget)
|
||||
self.checkBox_8.setObjectName("checkBox_8")
|
||||
self.gridLayout_2.addWidget(self.checkBox_8, 2, 1, 1, 1)
|
||||
self.checkBox_10 = QtWidgets.QCheckBox(self.gridLayoutWidget)
|
||||
self.checkBox_10.setObjectName("checkBox_10")
|
||||
self.gridLayout_2.addWidget(self.checkBox_10, 3, 0, 1, 1)
|
||||
self.checkBox_3 = QtWidgets.QCheckBox(self.gridLayoutWidget)
|
||||
self.checkBox_3.setObjectName("checkBox_3")
|
||||
self.gridLayout_2.addWidget(self.checkBox_3, 0, 2, 1, 1)
|
||||
self.checkBox = QtWidgets.QCheckBox(self.gridLayoutWidget)
|
||||
self.checkBox.setObjectName("checkBox")
|
||||
self.gridLayout_2.addWidget(self.checkBox, 0, 0, 1, 1)
|
||||
self.label_6 = QtWidgets.QLabel(self.tab_3)
|
||||
self.label_6.setGeometry(QtCore.QRect(440, 30, 281, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("华文宋体")
|
||||
font.setPointSize(18)
|
||||
self.label_6.setFont(font)
|
||||
self.label_6.setObjectName("label_6")
|
||||
self.label_12 = QtWidgets.QLabel(self.tab_3)
|
||||
self.label_12.setGeometry(QtCore.QRect(0, 310, 211, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Adobe Arabic")
|
||||
font.setPointSize(12)
|
||||
self.label_12.setFont(font)
|
||||
self.label_12.setObjectName("label_12")
|
||||
self.tabWidget.addTab(self.tab_3, "")
|
||||
self.tab_4 = QtWidgets.QWidget()
|
||||
self.tab_4.setObjectName("tab_4")
|
||||
self.gridLayoutWidget_3 = QtWidgets.QWidget(self.tab_4)
|
||||
self.gridLayoutWidget_3.setGeometry(QtCore.QRect(140, 90, 691, 171))
|
||||
self.gridLayoutWidget_3.setObjectName("gridLayoutWidget_3")
|
||||
self.gridLayout_5 = QtWidgets.QGridLayout(self.gridLayoutWidget_3)
|
||||
self.gridLayout_5.setContentsMargins(0, 0, 0, 0)
|
||||
self.gridLayout_5.setObjectName("gridLayout_5")
|
||||
self.page2_checkBox_4 = QtWidgets.QCheckBox(self.gridLayoutWidget_3)
|
||||
self.page2_checkBox_4.setObjectName("page2_checkBox_4")
|
||||
self.gridLayout_5.addWidget(self.page2_checkBox_4, 1, 0, 1, 1)
|
||||
self.page2_checkBox_6 = QtWidgets.QCheckBox(self.gridLayoutWidget_3)
|
||||
self.page2_checkBox_6.setObjectName("page2_checkBox_6")
|
||||
self.gridLayout_5.addWidget(self.page2_checkBox_6, 1, 2, 1, 1)
|
||||
self.page2_checkBox_9 = QtWidgets.QCheckBox(self.gridLayoutWidget_3)
|
||||
self.page2_checkBox_9.setObjectName("page2_checkBox_9")
|
||||
self.gridLayout_5.addWidget(self.page2_checkBox_9, 2, 2, 1, 1)
|
||||
self.page2_checkBox_5 = QtWidgets.QCheckBox(self.gridLayoutWidget_3)
|
||||
self.page2_checkBox_5.setObjectName("page2_checkBox_5")
|
||||
self.gridLayout_5.addWidget(self.page2_checkBox_5, 1, 1, 1, 1)
|
||||
self.page2_checkBox_2 = QtWidgets.QCheckBox(self.gridLayoutWidget_3)
|
||||
self.page2_checkBox_2.setObjectName("page2_checkBox_2")
|
||||
self.gridLayout_5.addWidget(self.page2_checkBox_2, 0, 1, 1, 1)
|
||||
self.page2_checkBox_3 = QtWidgets.QCheckBox(self.gridLayoutWidget_3)
|
||||
self.page2_checkBox_3.setObjectName("page2_checkBox_3")
|
||||
self.gridLayout_5.addWidget(self.page2_checkBox_3, 0, 2, 1, 1)
|
||||
self.page2_checkBox_7 = QtWidgets.QCheckBox(self.gridLayoutWidget_3)
|
||||
self.page2_checkBox_7.setObjectName("page2_checkBox_7")
|
||||
self.gridLayout_5.addWidget(self.page2_checkBox_7, 2, 0, 1, 1)
|
||||
self.page2_checkBox_1 = QtWidgets.QCheckBox(self.gridLayoutWidget_3)
|
||||
self.page2_checkBox_1.setObjectName("page2_checkBox_1")
|
||||
self.gridLayout_5.addWidget(self.page2_checkBox_1, 0, 0, 1, 1)
|
||||
self.page2_checkBox_8 = QtWidgets.QCheckBox(self.gridLayoutWidget_3)
|
||||
self.page2_checkBox_8.setObjectName("page2_checkBox_8")
|
||||
self.gridLayout_5.addWidget(self.page2_checkBox_8, 2, 1, 1, 1)
|
||||
self.page2_checkBox_10 = QtWidgets.QCheckBox(self.gridLayoutWidget_3)
|
||||
self.page2_checkBox_10.setObjectName("page2_checkBox_10")
|
||||
self.gridLayout_5.addWidget(self.page2_checkBox_10, 3, 0, 1, 1)
|
||||
self.label_13 = QtWidgets.QLabel(self.tab_4)
|
||||
self.label_13.setGeometry(QtCore.QRect(50, 30, 211, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Adobe Arabic")
|
||||
font.setPointSize(12)
|
||||
self.label_13.setFont(font)
|
||||
self.label_13.setObjectName("label_13")
|
||||
self.label_14 = QtWidgets.QLabel(self.tab_4)
|
||||
self.label_14.setGeometry(QtCore.QRect(50, 270, 211, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Adobe Arabic")
|
||||
font.setPointSize(12)
|
||||
self.label_14.setFont(font)
|
||||
self.label_14.setObjectName("label_14")
|
||||
self.tableWidget = QtWidgets.QTableWidget(self.tab_4)
|
||||
self.tableWidget.setGeometry(QtCore.QRect(150, 320, 701, 111))
|
||||
self.tableWidget.setObjectName("tableWidget")
|
||||
self.tableWidget.setColumnCount(5)
|
||||
self.tableWidget.setRowCount(2)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget.setVerticalHeaderItem(0, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget.setVerticalHeaderItem(1, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget.setHorizontalHeaderItem(0, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget.setHorizontalHeaderItem(1, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget.setHorizontalHeaderItem(2, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget.setHorizontalHeaderItem(3, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget.setHorizontalHeaderItem(4, item)
|
||||
self.pushButton_send_2 = QtWidgets.QPushButton(self.tab_4)
|
||||
self.pushButton_send_2.setGeometry(QtCore.QRect(380, 600, 201, 61))
|
||||
self.pushButton_send_2.setObjectName("pushButton_send_2")
|
||||
self.tableWidget_2 = QtWidgets.QTableWidget(self.tab_4)
|
||||
self.tableWidget_2.setGeometry(QtCore.QRect(150, 440, 701, 111))
|
||||
self.tableWidget_2.setObjectName("tableWidget_2")
|
||||
self.tableWidget_2.setColumnCount(5)
|
||||
self.tableWidget_2.setRowCount(2)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_2.setVerticalHeaderItem(0, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_2.setVerticalHeaderItem(1, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_2.setHorizontalHeaderItem(0, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_2.setHorizontalHeaderItem(1, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_2.setHorizontalHeaderItem(2, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_2.setHorizontalHeaderItem(3, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_2.setHorizontalHeaderItem(4, item)
|
||||
self.tabWidget.addTab(self.tab_4, "")
|
||||
self.tab_7 = QtWidgets.QWidget()
|
||||
self.tab_7.setObjectName("tab_7")
|
||||
self.tableWidget_3 = QtWidgets.QTableWidget(self.tab_7)
|
||||
self.tableWidget_3.setGeometry(QtCore.QRect(50, 60, 911, 501))
|
||||
self.tableWidget_3.setObjectName("tableWidget_3")
|
||||
self.tableWidget_3.setColumnCount(6)
|
||||
self.tableWidget_3.setRowCount(50)
|
||||
for i in range(50):
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_3.setVerticalHeaderItem(i, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_3.setHorizontalHeaderItem(0, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_3.setHorizontalHeaderItem(1, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_3.setHorizontalHeaderItem(2, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_3.setHorizontalHeaderItem(3, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_3.setHorizontalHeaderItem(4, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.tableWidget_3.setHorizontalHeaderItem(5, item)
|
||||
self.tabWidget.addTab(self.tab_7, "")
|
||||
self.label_5 = QtWidgets.QLabel(self.centralwidget)
|
||||
self.label_5.setGeometry(QtCore.QRect(330, 10, 281, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("华文宋体")
|
||||
font.setPointSize(18)
|
||||
self.label_5.setFont(font)
|
||||
self.label_5.setObjectName("label_5")
|
||||
Main_cmd_msg.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QtWidgets.QMenuBar(Main_cmd_msg)
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 1011, 26))
|
||||
self.menubar.setObjectName("menubar")
|
||||
Main_cmd_msg.setMenuBar(self.menubar)
|
||||
self.statusbar = QtWidgets.QStatusBar(Main_cmd_msg)
|
||||
self.statusbar.setObjectName("statusbar")
|
||||
Main_cmd_msg.setStatusBar(self.statusbar)
|
||||
|
||||
self.retranslateUi(Main_cmd_msg)
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
QtCore.QMetaObject.connectSlotsByName(Main_cmd_msg)
|
||||
self.Ui_Changes(Main_cmd_msg)
|
||||
def retranslateUi(self, Main_cmd_msg):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
Main_cmd_msg.setWindowTitle(_translate("Main_cmd_msg", "值班员界面"))
|
||||
self.radioButton_gb.setText(_translate("Main_cmd_msg", "广播模式"))
|
||||
self.radioButton_db.setText(_translate("Main_cmd_msg", "点播模式"))
|
||||
self.radioButton_dsbb.setText(_translate("Main_cmd_msg", "定时播报模式"))
|
||||
self.textEdit.setHtml(_translate("Main_cmd_msg", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
|
||||
self.pushButton_2.setText(_translate("Main_cmd_msg", "确认"))
|
||||
self.pushButton.setText(_translate("Main_cmd_msg", "确认"))
|
||||
self.label_3.setText(_translate("Main_cmd_msg", "任务结束时间:"))
|
||||
self.label.setText(_translate("Main_cmd_msg", "任务编号/主题:"))
|
||||
self.label_2.setText(_translate("Main_cmd_msg", "任务开始时间:"))
|
||||
self.label_7.setText(_translate("Main_cmd_msg", "定点播报时间:"))
|
||||
self.pushButton_4.setText(_translate("Main_cmd_msg", "确认"))
|
||||
self.pushButton_send_1.setText(_translate("Main_cmd_msg", "发送"))
|
||||
self.pushButton_3.setText(_translate("Main_cmd_msg", "清除"))
|
||||
self.label_4.setText(_translate("Main_cmd_msg", "通知内容:"))
|
||||
self.checkBox_2.setText(_translate("Main_cmd_msg", "二班"))
|
||||
self.checkBox_6.setText(_translate("Main_cmd_msg", "六班"))
|
||||
self.checkBox_7.setText(_translate("Main_cmd_msg", "七班"))
|
||||
self.checkBox_9.setText(_translate("Main_cmd_msg", "九班"))
|
||||
self.checkBox_5.setText(_translate("Main_cmd_msg", "五班"))
|
||||
self.checkBox_4.setText(_translate("Main_cmd_msg", "四班"))
|
||||
self.checkBox_8.setText(_translate("Main_cmd_msg", "八班"))
|
||||
self.checkBox_10.setText(_translate("Main_cmd_msg", "十班"))
|
||||
self.checkBox_3.setText(_translate("Main_cmd_msg", "三班"))
|
||||
self.checkBox.setText(_translate("Main_cmd_msg", "一班"))
|
||||
self.label_6.setText(_translate("Main_cmd_msg", "值班员编辑任务界面"))
|
||||
self.label_12.setText(_translate("Main_cmd_msg", "告知班级选择"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("Main_cmd_msg", "文本告知"))
|
||||
self.page2_checkBox_4.setText(_translate("Main_cmd_msg", "四班"))
|
||||
self.page2_checkBox_6.setText(_translate("Main_cmd_msg", "六班"))
|
||||
self.page2_checkBox_9.setText(_translate("Main_cmd_msg", "九班"))
|
||||
self.page2_checkBox_5.setText(_translate("Main_cmd_msg", "五班"))
|
||||
self.page2_checkBox_2.setText(_translate("Main_cmd_msg", "二班"))
|
||||
self.page2_checkBox_3.setText(_translate("Main_cmd_msg", "三班"))
|
||||
self.page2_checkBox_7.setText(_translate("Main_cmd_msg", "七班"))
|
||||
self.page2_checkBox_1.setText(_translate("Main_cmd_msg", "一班"))
|
||||
self.page2_checkBox_8.setText(_translate("Main_cmd_msg", "八班"))
|
||||
self.page2_checkBox_10.setText(_translate("Main_cmd_msg", "十班"))
|
||||
self.label_13.setText(_translate("Main_cmd_msg", "告知班级选择"))
|
||||
self.label_14.setText(_translate("Main_cmd_msg", "班级在线情况"))
|
||||
item = self.tableWidget.verticalHeaderItem(0)
|
||||
item.setText(_translate("Main_cmd_msg", "班级"))
|
||||
item = self.tableWidget.verticalHeaderItem(1)
|
||||
item.setText(_translate("Main_cmd_msg", "在线情况"))
|
||||
item = self.tableWidget.horizontalHeaderItem(0)
|
||||
item.setText(_translate("Main_cmd_msg", "一班"))
|
||||
item = self.tableWidget.horizontalHeaderItem(1)
|
||||
item.setText(_translate("Main_cmd_msg", "二班"))
|
||||
item = self.tableWidget.horizontalHeaderItem(2)
|
||||
item.setText(_translate("Main_cmd_msg", "三班"))
|
||||
item = self.tableWidget.horizontalHeaderItem(3)
|
||||
item.setText(_translate("Main_cmd_msg", "四班"))
|
||||
item = self.tableWidget.horizontalHeaderItem(4)
|
||||
item.setText(_translate("Main_cmd_msg", "五班"))
|
||||
self.pushButton_send_2.setText(_translate("Main_cmd_msg", "开始连线"))
|
||||
item = self.tableWidget_2.verticalHeaderItem(0)
|
||||
item.setText(_translate("Main_cmd_msg", "班级"))
|
||||
item = self.tableWidget_2.verticalHeaderItem(1)
|
||||
item.setText(_translate("Main_cmd_msg", "在线情况"))
|
||||
item = self.tableWidget_2.horizontalHeaderItem(0)
|
||||
item.setText(_translate("Main_cmd_msg", "六班"))
|
||||
item = self.tableWidget_2.horizontalHeaderItem(1)
|
||||
item.setText(_translate("Main_cmd_msg", "七班"))
|
||||
item = self.tableWidget_2.horizontalHeaderItem(2)
|
||||
item.setText(_translate("Main_cmd_msg", "八班"))
|
||||
item = self.tableWidget_2.horizontalHeaderItem(3)
|
||||
item.setText(_translate("Main_cmd_msg", "九班"))
|
||||
item = self.tableWidget_2.horizontalHeaderItem(4)
|
||||
item.setText(_translate("Main_cmd_msg", "十班"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("Main_cmd_msg", "语音连线"))
|
||||
|
||||
item = self.tableWidget_3.horizontalHeaderItem(0)
|
||||
item.setText(_translate("Main_cmd_msg", "发送方"))
|
||||
item = self.tableWidget_3.horizontalHeaderItem(1)
|
||||
item.setText(_translate("Main_cmd_msg", "接收方"))
|
||||
item = self.tableWidget_3.horizontalHeaderItem(2)
|
||||
item.setText(_translate("Main_cmd_msg", "开始时间"))
|
||||
item = self.tableWidget_3.horizontalHeaderItem(3)
|
||||
item.setText(_translate("Main_cmd_msg", "截止时间"))
|
||||
item = self.tableWidget_3.horizontalHeaderItem(4)
|
||||
item.setText(_translate("Main_cmd_msg", "任务主题"))
|
||||
item = self.tableWidget_3.horizontalHeaderItem(5)
|
||||
item.setText(_translate("Main_cmd_msg", "任务内容"))
|
||||
|
||||
#icon
|
||||
Main_cmd_msg.setWindowIcon(QIcon("5b8614f82dcbe.png"))
|
||||
|
||||
#background
|
||||
window_pale = QtGui.QPalette()
|
||||
window_pale.setBrush(Main_cmd_msg.backgroundRole(), QtGui.QBrush(QtGui.QPixmap("background2.png")))
|
||||
Main_cmd_msg.setPalette(window_pale)
|
||||
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_7), _translate("Main_cmd_msg", "反馈/消息统计"))
|
||||
self.label_5.setText(_translate("Main_cmd_msg", "值班员下达任务界面"))
|
||||
def Ui_Changes(self,Main_cmd_msg):
|
||||
# 设置文本告知
|
||||
#设置时间
|
||||
self.dateTimeEdit.setDateTime(QDateTime.currentDateTime())
|
||||
self.dateTimeEdit_2.setDateTime(QDateTime.currentDateTime())
|
||||
self.dateTimeEdit_3.setDateTime(QDateTime.currentDateTime())
|
||||
#设置左侧按钮 广播 点播 定时播报
|
||||
self.radioButton_gb.clicked.connect(lambda :self.label_12.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda :self.label_12.setVisible(True))
|
||||
|
||||
self.radioButton_gb.clicked.connect(lambda :self.checkBox.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda: self.checkBox.setVisible(True))
|
||||
|
||||
self.radioButton_gb.clicked.connect(lambda: self.checkBox_2.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda: self.checkBox_2.setVisible(True))
|
||||
|
||||
self.radioButton_gb.clicked.connect(lambda: self.checkBox_3.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda: self.checkBox_3.setVisible(True))
|
||||
|
||||
self.radioButton_gb.clicked.connect(lambda: self.checkBox_4.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda: self.checkBox_4.setVisible(True))
|
||||
|
||||
self.radioButton_gb.clicked.connect(lambda: self.checkBox_5.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda: self.checkBox_5.setVisible(True))
|
||||
|
||||
self.radioButton_gb.clicked.connect(lambda: self.checkBox_6.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda: self.checkBox_6.setVisible(True))
|
||||
|
||||
self.radioButton_gb.clicked.connect(lambda: self.checkBox_7.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda: self.checkBox_7.setVisible(True))
|
||||
|
||||
self.radioButton_gb.clicked.connect(lambda: self.checkBox_8.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda: self.checkBox_8.setVisible(True))
|
||||
|
||||
self.radioButton_gb.clicked.connect(lambda: self.checkBox_9.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda: self.checkBox_9.setVisible(True))
|
||||
|
||||
self.radioButton_gb.clicked.connect(lambda: self.checkBox_10.setVisible(False))
|
||||
self.radioButton_gb.toggled.connect(lambda: self.checkBox_10.setVisible(True))
|
||||
|
||||
|
||||
self.label_7.setVisible(False)
|
||||
self.dateTimeEdit_3.setVisible(False)
|
||||
self.pushButton_4.setVisible(False)
|
||||
|
||||
self.radioButton_dsbb.clicked.connect(lambda: self.label_7.setVisible(True))
|
||||
self.radioButton_dsbb.toggled.connect(lambda: self.label_7.setVisible(False))
|
||||
|
||||
self.radioButton_dsbb.clicked.connect(lambda: self.dateTimeEdit_3.setVisible(True))
|
||||
self.radioButton_dsbb.toggled.connect(lambda: self.dateTimeEdit_3.setVisible(False))
|
||||
|
||||
self.radioButton_dsbb.clicked.connect(lambda: self.pushButton_4.setVisible(True))
|
||||
self.radioButton_dsbb.toggled.connect(lambda: self.pushButton_4.setVisible(False))
|
||||
|
||||
self.pushButton_3.clicked.connect(self.textEdit.clear)
|
||||
self.pushButton_3.clicked.connect(self.lineEdit.clear)
|
||||
self.dateTimeEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss")
|
||||
self.dateTimeEdit_2.setDisplayFormat("yyyy-MM-dd HH:mm:ss")
|
||||
self.dateTimeEdit_3.setDisplayFormat("yyyy-MM-dd HH:mm:ss")
|
||||
self.pushButton_send_1.clicked.connect(self.Select_send_msgmod)
|
||||
|
||||
self.send_data_Signal.connect(self.Update_staform)
|
||||
self.pushButton_send_2.clicked.connect(self.Emit_voice_data)
|
||||
#将在线列表所有的格子设置为红色:
|
||||
"""
|
||||
# 创建新条目,设置背景颜色,添加到表格指定行列中
|
||||
newItem = QTableWidgetItem("160")
|
||||
#newItem.setForeground(QBrush(QColor(255, 0, 0)))
|
||||
tableWidget.setItem(0, 2, newItem)
|
||||
"""
|
||||
|
||||
for x in range(5):
|
||||
newItem = QTableWidgetItem("不在线")
|
||||
newItem.setForeground(QBrush(QColor(255, 0, 0)))
|
||||
self.tableWidget.setItem(1, x, newItem)
|
||||
for x in range(5):
|
||||
newItem = QTableWidgetItem("不在线")
|
||||
newItem.setForeground(QBrush(QColor(255, 0, 0)))
|
||||
self.tableWidget_2.setItem(1, x, newItem)
|
||||
|
||||
def Emit_voice_data(self):
|
||||
self.send_voice_data_Signal.emit()
|
||||
|
||||
def Select_send_msgmod(self):
|
||||
if self.radioButton_gb.isChecked():#设置为广播模式
|
||||
self.Broadcast()
|
||||
elif self.radioButton_db.isChecked():#设置为点播模式
|
||||
self.Dianbo()
|
||||
elif self.radioButton_dsbb.isChecked():#设置为定时播报模式
|
||||
self.Dianbo()
|
||||
else:
|
||||
self.Nonemod()
|
||||
def Nonemod(self):#什么模式都没点
|
||||
info = "请先选择模式!"
|
||||
ch_win = QMessageBox.about(self.pushButton_send_1, "提示", info)
|
||||
print(ch_win)
|
||||
|
||||
def Broadcast(self):#广播模式
|
||||
title = self.lineEdit.text()
|
||||
|
||||
startdate = self.dateTimeEdit.date()
|
||||
starttime = self.dateTimeEdit.time()
|
||||
|
||||
enddate = self.dateTimeEdit_2.date()
|
||||
endtime = self.dateTimeEdit_2.time()
|
||||
|
||||
msg =self.textEdit.toPlainText()
|
||||
data = {"sender":"zhibanyuan", "receiver":"broadcast", "startdatetime":startdate.toString('yyyy-MM-dd')+" "+starttime.toString('HH:mm:ss'),
|
||||
"enddatetime":enddate.toString('yyyy-MM-dd')+" "+endtime.toString('HH:mm:ss'), "title":title, "msg":msg}
|
||||
self.send_data_Signal.emit(data)
|
||||
|
||||
print(title,startdate.toString(),starttime.toString(),enddate.toString(),endtime.toString())
|
||||
|
||||
|
||||
def Dianbo(self):#点播模式
|
||||
name_dict = self.Get_dianbo_name()
|
||||
print(name_dict)
|
||||
title = self.lineEdit.text()
|
||||
|
||||
startdate = self.dateTimeEdit.date()
|
||||
starttime = self.dateTimeEdit.time()
|
||||
|
||||
enddate = self.dateTimeEdit_2.date()
|
||||
endtime = self.dateTimeEdit_2.time()
|
||||
|
||||
msg =self.textEdit.toPlainText()
|
||||
for class_name in name_dict.keys():
|
||||
#self.tableWidget.item(d_row, d_col).text() # 获取某行某列item中的x信息
|
||||
if name_dict[class_name] == 1:
|
||||
classnum = int(class_name[-1])
|
||||
if classnum >= 1 and classnum <= 5:
|
||||
Isonline = self.tableWidget.item(1, classnum - 1).text()
|
||||
if Isonline == "不在线":
|
||||
info = str(classnum) + "班不在线!请重新选择!"
|
||||
ch_win = QMessageBox.about(self.pushButton_send_1, "提示", info)
|
||||
print(ch_win)
|
||||
if classnum >= 6 and classnum <= 10:
|
||||
Isonline = self.tableWidget_2.item(1, classnum - 6).text()
|
||||
if Isonline == "不在线":
|
||||
info = str(classnum) + "班不在线!请重新选择!"
|
||||
ch_win = QMessageBox.about(self.pushButton_send_1, "提示", info)
|
||||
print(ch_win)
|
||||
|
||||
data = {"sender":"zhibanyuan", "receiver":class_name, "startdatetime":startdate.toString('yyyy-MM-dd')+" "+starttime.toString('HH:mm:ss'),
|
||||
"enddatetime":enddate.toString('yyyy-MM-dd')+" "+endtime.toString('HH:mm:ss'), "title":title, "msg":msg}
|
||||
self.send_data_Signal.emit(data)
|
||||
print(class_name,title, startdate.toString(), starttime.toString(), enddate.toString(), endtime.toString())
|
||||
|
||||
def Get_dianbo_name(self):
|
||||
retdict={}
|
||||
name_list=[0]*10
|
||||
if self.checkBox.isChecked():
|
||||
name_list[0]=1
|
||||
if self.checkBox_2.isChecked():
|
||||
name_list[1]=1
|
||||
if self.checkBox_3.isChecked():
|
||||
name_list[2]=1
|
||||
if self.checkBox_4.isChecked():
|
||||
name_list[3]=1
|
||||
if self.checkBox_5.isChecked():
|
||||
name_list[4]=1
|
||||
if self.checkBox_6.isChecked():
|
||||
name_list[5]=1
|
||||
if self.checkBox_7.isChecked():
|
||||
name_list[6]=1
|
||||
if self.checkBox_8.isChecked():
|
||||
name_list[7]=1
|
||||
if self.checkBox_9.isChecked():
|
||||
name_list[8]=1
|
||||
if self.checkBox_10.isChecked():
|
||||
name_list[9]=1
|
||||
for i in range(10):
|
||||
classnm =i+1
|
||||
name = "class"+str(classnm)
|
||||
retdict[name] = name_list[i]
|
||||
return retdict
|
||||
|
||||
def Update_staform(self,data):#用来更新值班员的统计表
|
||||
row = self.table_row
|
||||
|
||||
newItem=QTableWidgetItem(data["sender"])
|
||||
self.tableWidget_3.setItem(row,0,newItem)
|
||||
|
||||
newItem=QTableWidgetItem(data["receiver"])
|
||||
self.tableWidget_3.setItem(row,1,newItem)
|
||||
|
||||
newItem=QTableWidgetItem(data["startdatetime"])
|
||||
self.tableWidget_3.setItem(row,2,newItem)
|
||||
|
||||
newItem=QTableWidgetItem(data["enddatetime"])
|
||||
self.tableWidget_3.setItem(row,3,newItem)
|
||||
|
||||
newItem=QTableWidgetItem(data["title"])
|
||||
self.tableWidget_3.setItem(row,4,newItem)
|
||||
|
||||
newItem=QTableWidgetItem(data["msg"])
|
||||
self.tableWidget_3.setItem(row,5,newItem)
|
||||
self.table_row=row+1
|
||||
|
||||
def Update_receive_data(self, data):#用来更新来自学员端传来的信息
|
||||
row = self.table_row
|
||||
|
||||
newItem=QTableWidgetItem(data["sender"])
|
||||
self.tableWidget_3.setItem(row,0,newItem)
|
||||
|
||||
newItem=QTableWidgetItem(data["receiver"])
|
||||
self.tableWidget_3.setItem(row,1,newItem)
|
||||
|
||||
newItem=QTableWidgetItem(data["startdatetime"])
|
||||
self.tableWidget_3.setItem(row,2,newItem)
|
||||
|
||||
newItem=QTableWidgetItem(data["title"])
|
||||
self.tableWidget_3.setItem(row,4,newItem)
|
||||
|
||||
newItem=QTableWidgetItem(data["msg"])
|
||||
self.tableWidget_3.setItem(row,5,newItem)
|
||||
self.table_row=row+1
|
||||
|
||||
def Update_user_list(self,userdict):
|
||||
userlist = userdict.keys()
|
||||
for x in range(5):
|
||||
newItem = QTableWidgetItem("不在线")
|
||||
newItem.setForeground(QBrush(QColor(255, 0, 0)))
|
||||
self.tableWidget.setItem(1, x, newItem)
|
||||
for x in range(5):
|
||||
newItem = QTableWidgetItem("不在线")
|
||||
newItem.setForeground(QBrush(QColor(255, 0, 0)))
|
||||
self.tableWidget_2.setItem(1, x, newItem)
|
||||
|
||||
for x in range(5):
|
||||
if "class"+str((x+1)) in userlist:
|
||||
newItem = QTableWidgetItem("在线")
|
||||
newItem.setForeground(QBrush(QColor(0, 255, 0)))
|
||||
self.tableWidget.setItem(1, x, newItem)
|
||||
for x in range(5):
|
||||
if "class"+str((x+6)) in userlist:
|
||||
newItem = QTableWidgetItem("在线")
|
||||
newItem.setForeground(QBrush(QColor(0, 255, 0)))
|
||||
self.tableWidget_2.setItem(1, x, newItem)
|
||||
|
||||
|
||||
"""
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
MainWindow = QtWidgets.QMainWindow()
|
||||
win = Ui_Main_cmd_msg()
|
||||
win.setupUi(MainWindow)
|
||||
MainWindow.show()
|
||||
sys.exit(app.exec_())
|
||||
"""
|
@ -0,0 +1,55 @@
|
||||
|
||||
from login_ui import Ui_login_ui
|
||||
from cmd_send_msg import Ui_Main_cmd_msg
|
||||
from stu_receive_msg import Ui_stu_win
|
||||
from client_voice_stu import Client_voice_stu
|
||||
|
||||
import sys
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
from PyQt5.QtGui import *
|
||||
from PyQt5.QtWidgets import *
|
||||
from PyQt5.QtCore import QDate, QDateTime, QTime, pyqtSignal
|
||||
import datetime
|
||||
from client import Client
|
||||
import socket
|
||||
import json
|
||||
import rsa
|
||||
from binascii import hexlify
|
||||
import os
|
||||
import threading
|
||||
import sys
|
||||
|
||||
|
||||
def start_client_user(username,password):
|
||||
client.set_username(username,password)
|
||||
client.run()
|
||||
client_voice_stu = Client_voice_stu()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
MainWindow = QtWidgets.QMainWindow()
|
||||
|
||||
# 初始化client类
|
||||
username = ""
|
||||
client = Client()
|
||||
|
||||
log_win = Ui_login_ui()
|
||||
log_win.setupUi(MainWindow)
|
||||
log_win.open_user_Signal.connect(start_client_user)
|
||||
MainWindow.show()
|
||||
|
||||
#初始化学员界面
|
||||
MainWindow2 = QtWidgets.QMainWindow()
|
||||
win1 =Ui_stu_win()
|
||||
win1.setupUi(MainWindow2)
|
||||
client.send_data_Signal.connect(win1.Update_receive_data)
|
||||
win1.send_to_cmd_sig.connect(client.receive_from_ui)
|
||||
win1.pushButton.clicked.connect(client.run_step)
|
||||
log_win.open_user_Signal.connect(MainWindow2.show)
|
||||
win1.pushButton_3.clicked.connect(MainWindow2.close)
|
||||
win1.pushButton_3.clicked.connect(client.disconnection)
|
||||
#win1.close.connect(client.disconnection)
|
||||
|
||||
sys.exit(app.exec_())
|
||||
|
@ -0,0 +1,53 @@
|
||||
import socket
|
||||
import threading
|
||||
|
||||
|
||||
class Server_voice:
|
||||
def __init__(self):
|
||||
self.ip = socket.gethostbyname(socket.gethostname())
|
||||
while 1:
|
||||
try:
|
||||
self.port = 2
|
||||
|
||||
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.s.bind((self.ip, self.port))
|
||||
|
||||
break
|
||||
except:
|
||||
print("Couldn't bind to that port")
|
||||
|
||||
self.connections = []
|
||||
self.accept_connections()
|
||||
|
||||
def accept_connections(self):
|
||||
self.s.listen(100) # 开始tcp监听
|
||||
|
||||
print('Running on IP: ' + self.ip)
|
||||
print('Running on port: ' + str(self.port))
|
||||
|
||||
while True:
|
||||
c, addr = self.s.accept() # 返回端口和地址(用户端)
|
||||
|
||||
self.connections.append(c)
|
||||
|
||||
threading.Thread(target=self.handle_client, args=(c, addr,)).start() # 接收到就广播
|
||||
|
||||
def broadcast(self, sock, data): # 向除了sock的所有端口发送data
|
||||
for client in self.connections:
|
||||
if client != self.s and client != sock:
|
||||
try:
|
||||
client.send(data)
|
||||
except:
|
||||
pass
|
||||
|
||||
def handle_client(self, c, addr): # 传送数据
|
||||
while 1:
|
||||
try:
|
||||
data = c.recv(1024)
|
||||
self.broadcast(c, data)
|
||||
|
||||
except socket.error:
|
||||
c.close()
|
||||
|
||||
|
||||
server = Server_voice()
|