Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import PySimpleGUI as sg
- import queue
- import logging
- import threading
- from PySimpleGUI.PySimpleGUI import WIN_CLOSED
- import matplotlib.dates as md
- import matplotlib.ticker as ticker
- import matplotlib.spines as ms
- import pandas as pd
- import subprocess
- import os, time, re, csv, discord, asyncio, config, emoji, sys, colorama, typing, signal, errno, random, gc
- from valve.source.a2s import ServerQuerier, NoResponseError
- from matplotlib import pyplot as plt
- from datetime import datetime, timedelta
- from colorama import Fore, Style, init
- from config import LOGCHAN_ID as lchanID
- from config import VCHANNEL_ID as chanID
- from config import KILLEDCHAN_ID as kchadID
- from config import REWARDCHAN_ID as rchanID
- from config import EVENTCHAN_ID as echanID
- from config import SERVERCHAN_ID as schanID
- from config import file
- from config import SERVER
- from config import players_log as PL
- from config import rewards_log as RL
- from config import server_log as SL
- from config import MAX_PLAYERS as max_players
- from discord.ext import commands
- # == Переменные ===============================================
- # == re ==
- pdeath = '.*?Got character ZDOID from (\w+) : 0:0'
- sevent = '.*?Got character ZDOID from (\\w+)\\b(?!:)'
- pkill = '.*? (\\w+):(\\w+)\\b(?!:)'
- revent = '.*? (\w+):(\w+):(\w+)'
- cevent = '.*? Connected: (\w+) users.'
- # == config ==
- server_name = config.SERVER_NAME
- flog = config.file
- dlog = config.players_log
- rlog = config.rewards_log
- path_vdb_main = config.vdb_main
- path_player = 'csv/playerstats.csv'
- path_death = 'csv/deathlog.csv'
- path_killed = 'csv/killedlog.csv'
- path_reward = 'csv/rewardslog.csv'
- path_yaml = 'csv/rewardscount.yaml'
- path_icon_log = "C:\\Users\\Stepan\\Desktop\\VALHEIMBY BOT\\programma\\icon_log.ico"
- log_file = "C:\\Users\\Stepan\\Desktop\\VALHEIMBY BOT\\programma\\PVPLogs.log"
- # == func ==
- bot = commands.Bot(command_prefix=';', help_command=None)
- logger = logging.getLogger('MAIN')
- now = datetime.now()
- gettime = now.strftime("%d/%m/%Y | %H:%M:%S > ")
- colorama.init()
- root_logger= logging.getLogger()
- root_logger.setLevel(logging.DEBUG)
- handler = logging.FileHandler('PVPLog.log', 'w', 'utf-8')
- handler.setFormatter(logging.Formatter('%(name)s, %(asctime)s, [%(levelname)s], %(message)s'))
- root_logger.addHandler(handler)
- def log(log):
- logger.info(log)
- def Start():
- import vb # << Проблема возникает
- class ThreadedApp(threading.Thread):
- def __init__(self):
- super().__init__()
- self._stop_event = threading.Event()
- def run(self):
- Start()
- def stop(self):
- self._stop_event.set()
- class QueueHandler(logging.Handler):
- def __init__(self, log_queue):
- super().__init__()
- self.log_queue = log_queue
- def emit(self, record):
- self.log_queue.put(record)
- def main():
- layout = [
- [sg.Multiline(size=(75, 35), key='-LOG-', disabled=True, autoscroll=True)],
- [sg.Button('Запустить', bind_return_key=True, key='-START-'), sg.Button('Завершить', key="-EXIT-")]
- ]
- window = sg.Window('Main', layout,
- default_element_size=(30, 2),
- font=('Consolas', ' 10'),
- default_button_element_size=(8, 2),
- icon=path_icon_log)
- appStarted = False
- logging.basicConfig(level=logging.DEBUG)
- log_queue = queue.Queue()
- queue_handler = QueueHandler(log_queue)
- logger.addHandler(queue_handler)
- threadedApp = ThreadedApp()
- while True:
- event, values = window.read(timeout=100)
- if event == '-START-':
- if appStarted is False:
- threadedApp.start()
- logger.debug('Запуск файла')
- window['-START-'].update(disabled=True)
- appStarted = True
- elif event == "-EXIT-":
- logger.debug('Приложение завершено!')
- window['-START-'].update(disabled=False)
- appStarted = False
- break
- elif event == WIN_CLOSED:
- break
- try:
- record = log_queue.get(block=False)
- except queue.Empty:
- pass
- else:
- msg = queue_handler.format(record)
- window['-LOG-'].update(f'{msg}\n', append=True)
- window.close()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment