Как исправить «значок призрака» в Python при использованииPython

Программы на Python
Ответить
Anonymous
 Как исправить «значок призрака» в Python при использовании

Сообщение Anonymous »

Я создал скрипт, который использует сниффер для получения данных из него
вот что у меня получилось

Код: Выделить всё

class Sniffer:
def __init__(self):
self.process = None
self.output = ''
self.lock = threading.Lock()
self.running = False

def start(self):
# Start the subprocess in a separate thread
if not self.running:
self.running = True
self.output = ''  # Clear previous output
self.process = subprocess.Popen(
[
r"C:\Program Files\Albion Data Client\albiondata-client.exe",
"-d",
"-debug",
"-events", "0",
"-operations", "75,76",
"-ignore-decode-errors"
],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
bufsize=1,
universal_newlines=True,
)

# Start a thread to read the output
self.read_thread = threading.Thread(target=self._read_output)
self.read_thread.start()

def _read_output(self):
# Read the output from the process line by line
while self.running:
output_line = self.process.stdout.readline()
if output_line:
with self.lock:
self.output += output_line
else:
break

self.process.stdout.close()

def stop(self):
if self.running:
self.running = False
self.process.terminate()  # Terminate the process
self.process.wait()  # Wait for the process to terminate
self.read_thread.join()  # Wait for the reading thread to finish

def get_output(self):
with self.lock:
captured_output = self.output
out = []
# Perform the reconstruction steps
captured_output = re.findall(r'(\[\{.*?\}\])', captured_output)
captured_output = ''.join(captured_output)
captured_output = captured_output.replace("][", ' ')
captured_output = captured_output.replace("}", "},")

captured_output = captured_output.replace("false", '"false"')
captured_output = captured_output.replace("null", '"null"')
captured_output = captured_output.replace("},]", "}]")

try:
out = json.loads(captured_output)
except json.decoder.JSONDecodeError:
print('No Avilable Items')
pass

for order in out:
order["UnitPriceSilver"] /= 10000
order["TotalPriceSilver"] /= 10000

return out
скрипт выполняет свою работу, единственная проблема заключается в том, когда я его использую

Код: Выделить всё

sniffer = Sniffer()

sniffer.start()
sniffer.stop()
чтобы открыть «albiondata-client.exe» и получить из него данные, я столкнулся со странной проблемой
«призрачных значков» в разделе «показать скрытые значки», которые когда я навожу на них курсор, они просто исчезают
Изображение

это значок с A/D, я понятия не имею, как это исправить, буду признателен за помощь

Подробнее здесь: https://stackoverflow.com/questions/792 ... when-using
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»