Форум сайта python.su
Добрый день!
По циклу создаются QLineEdit. В зависимости от вводимых параметров их количество может быть разным (например выбрали количество 2, нажали на кнопку и создается динамически 2 QLineEdit)
Вопрос: как можно обратиться к конкретному QLineEdit, чтобы получить значение введеное в конкретный QLineEdit?
Офлайн
Ну вы в списке заполняете? Из него по индексу и хватайте
Либо словарь создайте и по ключу потом
Невидя что там у вас за код - тяжело дать вразумительный совет
Офлайн
def izWord(self): key=[] sch=7 doc = docx.Document('shablon.docx') for p in doc.paragraphs: rrr = re.findall(r'\{\{(.*?)\}\}',p.text) for el in rrr: if (rrr): self.line_din_prav = QLineEdit(text=''.join(map(str,el)),readOnly=True) self.grid.addWidget(self.line_din_prav,sch+1,1) key.append(self.line_din_prav.text()) with open('vrem.txt','w') as f: f.write(str(','.join(map(str,key)))) self.line_din_lev = QLineEdit(text='') self.grid.addWidget(self.line_din_lev,sch+1,0) sch=sch+1 f.close()
Офлайн
Ну вот смотрите
Сейчас вы в цикле создаете поля
А вам нужно немного разнести порядок создания
создайте в цикле словарь где 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.")
Офлайн
> По циклу создаются QLineEdit
Не нужно так делать! У тебя есть QTableWidget/View и QTreeWidget/View пользуйся ими.
Офлайн
Не нужно так делать! У тебя есть QTableWidget/View и QTreeWidget/View пользуйся ими.
Офлайн