from PyQt5 import QtCore, QtGui, QtWidgets
import pyautogui
import threading
class Ui_MainWindow(object):
# ... ваш предыдущий код ...
def add_functions(self):
self.pushButton.clicked.connect(self.start_autoswap)
self.stopButton.clicked.connect(self.stop_autoswap) # Добавьте кнопку остановки в ваш интерфейс
def start_autoswap(self):
self.autoswap_thread = threading.Thread(target=self.autoswap, daemon=True)
self.autoswap_thread.start()
def stop_autoswap(self):
self.running = False
def autoswap(self):
self.running = True
while self.running:
x = 459
y = 1402
Color = pyautogui.screenshot().getpixel((x, y))
print(Color)
if Color == (185, 185, 185):
pyautogui.press("2", presses=4, interval=0.01)
# ... остальная часть вашего кода ...start_autoswap запускает метод autoswapв отдельном потоке.self.running используется для контроля выполнения цикла.stop_autoswap изменяет значение self.running на False, что приводит к остановке цикла.stop_autoswap. Также убедитесь, что вы используете daemon=True при создании потока, чтобы он завершался вместе с основной программой. SELECT a, b, c FROM data WHERE data MATCH 'a:$fullQuery OR b:$fullQuery' AND NOT c:$fullQuery;MATCH для поиска по столбцам a и b с использованием переменной $fullQuery. Оператор AND NOT исключает результаты, где столбец c также соответствует запросу $fullQuery.$fullQuery содержит “Что ГЛАВРЫБА может”, запрос вернет строки, где a или b содержат эту фразу, но c не содержит её. Это позволит вам исключить столбец c из поиска, но при этом включить его в выводимые результаты. Пожалуйста, убедитесь, что ваш запрос корректно обрабатывает специальные символы и пробелы в $fullQuery. async/await для асинхронных операций, вы можете использовать библиотеку mysql2/promise, которая поддерживает промисы и позволяет использовать async/await. Вот пример того, как можно реализовать ваш запрос:const mysql = require('mysql2/promise');
async function getData() {
const connection = await mysql.createConnection({
host: "127.0.0.1",
user: "root",
password: "",
database: "mania"
});
try {
const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d');
for (let row of rows) {
console.log(`ID: ${row['birza']}, NAME: ${row['symbol']}, PRICE: ${row['price']}`);
// Теперь вы можете работать с каждой строкой данных как с объектом
// Например, вы можете сохранить данные в переменные или отправить их куда-либо
}
} catch (err) {
console.error(err);
} finally {
await connection.end();
}
}
getData();getData, которая устанавливает соединение с базой данных, выполняет запрос и выводит результаты. Каждая строка результатов обрабатывается в цикле, и вы можете сохранять данные в переменные или использовать их для других операций внутри цикла.mysql2/promise вам нужно будет установить этот пакет через npm:npm install mysql2async/await позволяет писать асинхронный код, который выглядит как синхронный, и делает его более читаемым и удобным для отладки. ForEach-Object или foreach. В вашем случае, когда у вас есть два файла с данными, и вы хотите создать символические ссылки для каждой пары номера ПК и имени пользователя, скрипт может выглядеть следующим образом:$pc_numbers = Get-Content 'C:\test\pc_name_stm.txt'
$user_names = Get-Content 'C:\test\stm_name.txt'
for ($i = 0; $i -lt $pc_numbers.Length; $i++) {
$pc_number = $pc_numbers[$i]
$user_name = $user_names[$i]
$path = "\\$pc_number\c$\Users\$user_name\Desktop\Полезные_ссылки_СТМ"
$target = "\\192.168.123.220\Shared\СТМ\Полезные_ссылки_СТМ"
New-Item -ItemType SymbolicLink -Path $path -Target $target
}$pc_numbers и $user_names. Затем он использует цикл for, чтобы пройти по каждому элементу массивов, создавая символическую ссылку для каждой пары номера ПК и имени пользователя.$pc_number и $user_name являются отдельными элементами массива, а не всем массивом сразу. package.json находится не в корневой папке, где вы открываете VS Code, то действительно, могут возникнуть проблемы с распознаванием TypeScript и соответствующих плагинов, таких как typescript-plugin-css-modules. Вот несколько шагов, которые могут помочь решить эту проблему:package.json. Это может потребовать запуска команды установки в соответствующей подпапке.settings.json, указав путь к нужной версии TypeScript.tsconfig.json. Убедитесь, что путь к плагину typescript-plugin-css-modules указан относительно корня рабочей области, где находится package.json.package.json файлов и соответствующие конфигурации TypeScript в одной рабочей области.<Navigate> в вашем компоненте NotFoundзаключается в том, что вы пытаетесь использовать его как JSX-элемент внутри обработчика событий, что не приведет к рендерингу и перенаправлению. Вместо этого вам нужно использовать хук useNavigateдля программного перенаправления.import { useEffect, useState } from "react";
import { useNavigate } from "react-router-dom";
export default function NotFound(props) {
const [redirectTimeOut, setRedirectTimeOut] = useState(5);
const navigate = useNavigate(); // Используйте хук useNavigate
useEffect(() => {
const interval = setInterval(() => {
if (redirectTimeOut >= 1) {
setRedirectTimeOut((current) => (current >= 1 ? current - 1 : 0));
} else {
clearInterval(interval);
navigate('/'); // Программное перенаправление
}
}, 1000);
// Очистка интервала при размонтировании компонента
return () => clearInterval(interval);
}, [redirectTimeOut, navigate]); // Добавьте navigate в массив зависимостей
const failedURL = "https://main/test";
return (
<div className="notFound-page">
{/* Остальной код компонента */}
</div>
);
}navigate('/') будет вызвана, и пользователь будет перенаправлен на главную страницу. Убедитесь, что вы добавили navigateв массив зависимостей useEffect, чтобы избежать нежелательных повторных вызовов перенаправления. void Start() {
FirebaseAuth auth = FirebaseAuth.DefaultInstance;
auth.StateChanged += AuthStateChanged;
AuthStateChanged(this, null);
}
void AuthStateChanged(object sender, EventArgs eventArgs) {
if (FirebaseAuth.DefaultInstance.CurrentUser != null && FirebaseAuth.DefaultInstance.CurrentUser.IsEmailVerified) {
// Пользователь вошел в систему и подтвердил свой Email.
// Переход в игру.
} else {
// Пользователь либо не вошел в систему, либо не подтвердил Email.
// Оставаться на экране входа или регистрации.
}
}
void OnDestroy() {
if (auth != null) {
auth.StateChanged -= AuthStateChanged;
auth = null;
}
}void* pMemory = VirtualAlloc(NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE | PAGE_WRITECOMBINE);