Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 28, 2010 12:55:52

squ1b3r
От:
Зарегистрирован: 2010-02-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

pyqt4 + QLCDNumber + ?

День добрый всем.

Помогите пожалуйста с такой вот проблемой. Нужно при нажатии на кнопку создавать объект типа QLCDNumber, объектов может быть много, в дальнейшем при выделении QLCDNUmber или как-то еще делать выборку по созданным объектам и вытаскивать имя выделенного объекта для дальнейшей работы, вопрос:

1. Каким образом создавать объекты QLCDNumber, не значая из изначального количества?
2. Каким образом выделить нужный QLCDNumber на форме?
3. Каким образом выбрать соответсвующий объект из созданных?

Не так давно начал разбираться и вот попал в тупик, никак не могу осилить, нагуглить ничего не смог. Заранее спасибо.



Офлайн

#2 Фев. 28, 2010 15:03:29

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

pyqt4 + QLCDNumber + ?

Ну надо просто сделать список QLCDNumber-ов и оперировать элементами. Главное не забыть, что чтобы удалить виджет, надо не просто удалить объект, а еще перед этим задать ему .setParent(None) (или как-то так). Тема поднималась тут пару раз.
Выделить нужный виджет можно либо по простому - поставить рядом с ним чекбокс или кнопку какую-нибудь и хранить их кортежем в том самом списке, либо круче - сделать свой QLCDNumber, который будет реагировать на клик и слать сигнал со своими реквизитами, при этом можно сделать, чтобы он выделялся цветом для наглядности.



Офлайн

#3 Фев. 28, 2010 15:09:56

squ1b3r
От:
Зарегистрирован: 2010-02-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

pyqt4 + QLCDNumber + ?

Про список я и сам догодался, я просто не могу понять как это увязать вместе. Нажал я на кнопку создался QLCDNumber, нажал еще 5 раз, создалось еще 5 штук, а потом мне нужет допустим элемент на который я тыкнул и выделил, причем порядкого номера его я не знаю. Как быть в этом случае.

Про свой QLCDNumber спасибо, интересная мысль



Офлайн

#4 Фев. 28, 2010 18:42:00

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

pyqt4 + QLCDNumber + ?

Вот с помощью .childAt() получилось выбрать нужный виджет, даже без списка.

# -*- coding: utf-8 -*-
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class Window(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.lay = QVBoxLayout(self)
self.delButton = QPushButton("Delete Selected", self)
self.addButton = QPushButton("Add", self)
self.lay.addWidget(self.addButton)
self.lay.addWidget(self.delButton)
self.selected = None

self.addButton.clicked.connect(self.addLCD)
self.delButton.clicked.connect(self.delLCD)

def mousePressEvent(self, event):
self.selected = self.childAt(event.pos())

def addLCD(self):
self.lay.addWidget(QLCDNumber(self))

def delLCD(self):
if type(self.selected) == QLCDNumber:
self.selected.setParent(None)
self.selected = None

if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
app.exec_()



Офлайн

#5 Фев. 28, 2010 20:48:03

squ1b3r
От:
Зарегистрирован: 2010-02-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

pyqt4 + QLCDNumber + ?

Огромное вам спасибо. Именно то, что надо. Осталось только разобраться как выделить это дело и почему-то после удаления LCD форма не меняет свой размер обратно ( Подскажите если не трудно.



Офлайн

#6 Фев. 28, 2010 21:25:59

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

pyqt4 + QLCDNumber + ?

В delLCD() вызывай self.adjustSize()



Офлайн

#7 Фев. 28, 2010 21:29:42

squ1b3r
От:
Зарегистрирован: 2010-02-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

pyqt4 + QLCDNumber + ?

И еще раз спасибо. :) Спрошу еще тогда то кучи. приложения написанные на qt4 в гноме выглядят как родные по дефолту, но есть проиложния которые выглядят как в КДЕ. Как такого добиться?



Отредактировано (Фев. 28, 2010 21:31:33)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version