Уведомления

Группа в Telegram: присоединиться

#1 Март 25, 2020 15:06:25

Ser5+
Зарегистрирован: 2019-11-18
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение информации из окна

Добрый вечер. Как можно получить информацию окна или диалога. Допустим создал в окне виджеты например Label или Line. Если их мало то я вручную прописал к каждому свое имя и получаю значения из них по имени. А вот я сейчас создал эти виджеты через цикл или через функцию,то есть имя у всех одинаковы.Вот в таком случае как их мне получить значения? Думал как-то можно перечислить все элементы в окне и узнать как обратиться к нужному элементу.

Допустим такой у меня пример
Лучше написать одну строчку,чем для каждого по 4 строчки,но как обратиться к ним теперь не знаю.

 #Функция Label и LineEdit
self.label('Код орг.:',x1=20,y1=40,x11=100,y11=20,x2=120,y2=40,x22=100,y22=20)
self.label('Наим.:',x1=250,y1=40,x11=100,y11=20,x2=300,y2=40,x22=200,y22=20)
self.label('Наим.полное:',x1=20,y1=70,x11=100,y11=20,x2=120,y2=70,x22=600,y22=20)
def label(self,zag,x1,y1,x11,y11,x2,y2,x22,y22):
        Label = QtWidgets.QLabel(zag, parent=self.Dialog)
        Label.setGeometry(x1,y1,x11,y11)
        Line = QtWidgets.QLineEdit(parent=self.Dialog)
        Line.setGeometry(x2,y2,x22,y22)

Офлайн

#2 Март 25, 2020 15:26:14

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 7353
Репутация: +  508  -
Профиль   Отправить e-mail  

Получение информации из окна

Ser5+
эти виджеты через цикл или через функцию,то есть имя у всех одинаковы.
во-первых, не вижу связи. Кто мешает дать уникальные имена типа name_1, name_2 и тд?
во-вторых, ну раз элементов много и они одинаковые, то поместите же их в список. Будете получать из из списка по индексу, хотя бы опять в цикле.



Офлайн

#3 Март 25, 2020 16:00:15

Ser5+
Зарегистрирован: 2019-11-18
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение информации из окна

FishHook
Понял. Попробую два списка создать в одном для имена для лабел а в другом для полей ввода. По 40 штук получается у меня.

Офлайн

#4 Март 26, 2020 07:31:01

Ser5+
Зарегистрирован: 2019-11-18
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение информации из окна

FishHook
А можно как то по другому задать имя для label? А то как буду менять имя переменной через цикл,такого не бывает же. типа так что ль список=QtWidgets.QLabel(zag, parent=self.Dialog) потом для второго список=QtWidgets.QLabel(zag, parent=self.Dialog) это чушь какая то. Который выслал в предыдущем посте код,получить получу значение,но только последний это понятно. Я думал можно как то задать имя labely да и не только ему а и другим виджетам как то так типа label=QtWidgets.QLabel('имя лабела','текст', parent=self.Dialog) и по имени лабела получать значения,а не по имени переменной.

Офлайн

#5 Март 26, 2020 07:52:02

Ser5+
Зарегистрирован: 2019-11-18
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение информации из окна

FishHook
А все решил я проблему. вот как делается если кому пригодится.Вопрос закрыт.

 self.widgets = []
#Функция Label и LineEdit
self.label('Код орг.:',x1=20,y1=40,x11=100,y11=20,x2=120,y2=40,x22=100,y22=20)
self.label('Наим.:',x1=250,y1=40,x11=100,y11=20,x2=300,y2=40,x22=200,y22=20)
self.label('Наим.полное:',x1=20,y1=70,x11=100,y11=20,x2=120,y2=70,x22=600,y22=20)
self.label('Код группы орг.:',x1=20,y1=130,x11=100,y11=20,x2=120,y2=130,x22=100,y22=20)
def label(self,zag,x1,y1,x11,y11,x2,y2,x22,y22):
        self.Label = QtWidgets.QLabel(zag, parent=self.Dialog)
        self.Label.setGeometry(x1,y1,x11,y11)
        self.Line = QtWidgets.QLineEdit(parent=self.Dialog)
        self.Line.setGeometry(x2,y2,x22,y22)
        #Запишем в список значения
        self.widgets.append((self.Label, self.Line))
#Получаем все значения
for self.Label, self.Line in self.widgets:
     print('{} {}'.format(self.Label.text(), self.Line.text()))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version