Найти - Пользователи
Полная версия: pyqt4 + QLCDNumber + ?
Начало » GUI » pyqt4 + QLCDNumber + ?
1
squ1b3r
День добрый всем.

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

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

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

Про свой QLCDNumber спасибо, интересная мысль
pasaranax
Вот с помощью .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_()
squ1b3r
Огромное вам спасибо. Именно то, что надо. Осталось только разобраться как выделить это дело и почему-то после удаления LCD форма не меняет свой размер обратно ( Подскажите если не трудно.
pasaranax
В delLCD() вызывай self.adjustSize()
squ1b3r
И еще раз спасибо. :) Спрошу еще тогда то кучи. приложения написанные на qt4 в гноме выглядят как родные по дефолту, но есть проиложния которые выглядят как в КДЕ. Как такого добиться?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB