Ну вот смотрите
Сейчас вы в цикле создаете поля
А вам нужно немного разнести порядок создания
создайте в цикле словарь где el это ключ а значение это QLineEdit(…)
А далее вы по словарю уже сможете обращаться к обьектам. То есть словарь у вас будет содержать не ключ - значение а ключ - обьект
После того как заполнили словарь, вы уже проходитесь по нему другим циклом и добавляете обьекты виджет
Соотвтественно - потом используя этот же словарь вы сможеет обращаться к обьектам по тем же ключам что и добавлялись в виджет
не уверен что код ниже. работает - это генеренка(нет желания тянуть кутю)
Но из него понятна идея
import docx
import re
from PyQt5.QtWidgets import QLineEdit, QGridLayout, QWidget
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.grid = QGridLayout(self)
self.qlines = {} # Dictionary to store QLineEdit objects
self.izWord()
def izWord(self):
key = []
sch = 7
doc = docx.Document('shablon.docx')
for p in doc.paragraphs:
matches = re.findall(r'\{\{(.*?)\}\}', p.text)
for el in matches:
line_edit = QLineEdit(text=el, readOnly=True)
self.grid.addWidget(line_edit, sch + 1, 1)
self.qlines[el] = line_edit # Store QLineEdit object by key
key.append(el)
# Assuming no need to create QLineEdit objects here
# self.line_din_lev = QLineEdit(text='')
# self.grid.addWidget(self.line_din_lev, sch + 1, 0)
sch += 1
with open('vrem.txt', 'w') as f:
f.write(','.join(key))
def get_text(self, key_name):
"""Retrieves the text from the QLineEdit object with the given key.
Args:
key_name (str): The key used to store the QLineEdit object in the qlines dictionary.
Returns:
str: The text from the QLineEdit object, or None if the key is not found.
"""
return self.qlines.get(key_name) # Use get() with default None
# Example usage
window = MyWindow()
window.show()
text = window.get_text("key_name") # Replace "key_name" with the actual key
if text:
print(text)
else:
print("Key not found in qlines dictionary.")