Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Общение Python и Кибор

Страниц (1): [1]
 

1. CLF - 04 Января, 2024 - 08:48:49 - перейти к сообщению
Доброго дня. Помогите разобраться с передачей переменных в питон и обратно. Вырезанный текст с помощью функции CutText(Rez_Cut_Text1) передать в питон для выполнения скрипта. пробовал sendgetpython("Rez_Cut_Text=Rez_Cut_Text1"); выдает ошибку синтаксиса, и sendgetpython("Rez_Cut_Text=`{Rez_Cut_Text1}`"); и просто sendpython. В общем не понимаю что делаю не так) Пока нашел решение о создании txt-файла с содержанием переменной и считывание его в питоне. Работает, но понимаю есть путь проще. Вот весь код с комментариями.

CODE:
string SFile;

RunPython(1, 0, 1, 10, 10, 700, 200, 0);

string a;

string Rez_Cut_Text1;

Rez_Cut_Text1="LJ 1536 dnf";

File("w", "C:\file.txt", Rez_Cut_Text1, #SFile, "D:\Scan\", "file.txt");

enableconsolepython(1, 1, 50, 50, 400, 600);

if (runpython()==0){messagebox ("Не удалось запустить Python"); goto er;}

__python_sync

import pandas as pd

# Полный путь к Temp файлу

file_path = r'D:\Scan\file.txt'

# Открываем Temp и считываем в переменную Rez_Cut_Text

with open(file_path, 'r') as file:

Rez_Cut_Text = file.read()

# Полный путь к файлу Excel

file_path = r'D:\Scan\asd.xlsx'

# Загрузка данных из Excel-файла в DataFrame

try:

data = pd.read_excel(file_path)

except Exception as e:

print(f"Ошибка при чтении файла: {e}")

raise

# Преобразование DataFrame в список словарей

printer_cartridge_list = data.to_dict('records')

# Значение модели принтера, полученное с помощью переменной

# print (kiborcode (Rez_Cut_Text1))

# Перебор элементов списка с моделями принтеров и картриджами

for item in printer_cartridge_list:

model = item["модель"]

cartridges = [str(item[f"картридж{i}"]) for i in range(1, 9)] # Преобразование в строку

if Rez_Cut_Text == model:

print(f"Для принтера с моделью {Rez_Cut_Text} используются картриджи: {', '.join(cartridges)}")

break

else:

print(f"Для модели принтера {Rez_Cut_Text} не найдены подходящие крт")

__end_python

messagebox("");

er:;

disableconsolepython();

a=sendgetpython("print(cartridges)");

messagebox(a);

function RunPython(int RunP, int Consol, int Con_W, int Cx1, int Cy1, int Cex, int Cey, int P_Array)

{

int N_Array=-1;

if (P_Array) RunP=ARRAY;

if (Consol)enableconsolepython(Con_W, 1, Cx1, Cy1, Cex, Cey);

int Ot=runpython(RunP);//_Ryn_Python__

//_Var_Python__

__python

__end_python

sendgetpython("print(^'Yes^')");

return Ot;

}

function File(string rej, string savefile, string text, string #var, string path, string file)

{

if (rej=="r")

{

string t;

if (fopen (savefile, rej)!=0)

{

while (freadline (t))var=var+t+"^r^n";

fclose();

}

}

else

{

if (fopen (path+file, rej)!=0)

{

fwrite(text);

fclose();

}

}

}
2. Kibor - 04 Января, 2024 - 10:09:33 - перейти к сообщению
 CLF пишет:
пробовал sendgetpython("Rez_Cut_Text=Rez_Cut_Text1"); выдает ошибку синтаксиса, и sendgetpython("Rez_Cut_Text=`{Rez_Cut_Text1}`"); и просто sendpython. В общем не понимаю что делаю не так).......


Гадаем?



1
CODE:
string Rez_Cut_Text="LJ 1536 dnf";


enableconsolepython(1, 1, 50, 50, 400, 600);

if (runpython()==1)
{
__python_sync
Rez_Cut_Text='Текст до'
print (Rez_Cut_Text)
Rez_Cut_Text='kiborcode (Rez_Cut_Text)'
print (Rez_Cut_Text)
__end_python
messagebox ("");
closepython();
}


2
CODE:
string Rez_Cut_Text="LJ 1536 dnf";


enableconsolepython(1, 1, 50, 50, 400, 600);

if (runpython()==1)
{
__python_sync
Rez_Cut_Text='Текст до'
print (Rez_Cut_Text)
__end_python

sendgetpython("Rez_Cut_Text=^'"+Rez_Cut_Text+"^'");

__python_sync
print (Rez_Cut_Text)
__end_python
messagebox ("");
closepython();
}



Powered by ExBB FM 1.0 Final