Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> pyqt4_gui "динамическое" создание и даление кнопок 
:(
    Опции темы
andreyVL
Дата 27.2.2010, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.5.2009

Репутация: нет
Всего: нет



привет уважаемые. может простая задачка. создаётся окно, опрашивается директория, к примеру, images = listdir('/home/andrey/'). дальше я как бы создаю цикл
Код

for i in images:
        if i.endswith('png'):
            img = '/home/andrey/%s' % i


и теперь мне надо код, который создавал бы столько кнопок сколько, *.png файлов в тои папке и на каждой кнопке своя иконка. теперь, если иконку удаляешь из папки, автоматом удаляется кнопка. как создать динамическое создание и удаление кнопок?
PM MAIL   Вверх
Amp
Дата 27.2.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 2
Всего: 17



Создаешь в цикле QPushButton-ы, задаешь необходимую иконку, добавляешь их в Layout (какой-нибудь QHBoxLayout). Далее каким-то образом отслеживаешь изменения ФС в папке и, по необходимости, удаляешь виджет с кнопкой из лэйаута.
PM MAIL   Вверх
andreyVL
Дата 28.2.2010, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.5.2009

Репутация: нет
Всего: нет



Код

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from os import listdir

from PyQt4 import QtCore, QtGui

images = listdir('/home/andrey/')

class Window(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
    self.setGeometry(800, 600, 350, 150)
    
    for i in images:
        if i.endswith('png'):
            img = '/home/andrey/%s' % i
            button = QtGui.QPushButton('Name', self)
            button.setGeometry(1, 1, 100, 100)
            button.setIcon(QtGui.QIcon(img))
    

    self.connect(button, QtCore.SIGNAL('clicked()'), QtGui.qApp, QtCore.SLOT('quit()'))
    
    
    
app = QtGui.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())


я же не знаю сколько там файлов иконок, к примеру если там 4 файла как создать 4 кнопки. как отслеживать состояние папки, практически это уже делал. ещё вопрос, как мне
удалить кнопку из гуи, кликая на ней правой кнопкой мыши, и чтобы вылетела команда удалить.
PM MAIL   Вверх
Amp
Дата 28.2.2010, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 2
Всего: 17



Как-то так:
Код

class MainWindow(QtGui.QDialog):
    def __init__(self):
        QtGui.QWidget.__init__(self, None)

        self.layout = QtGui.QVBoxLayout()
        self.group = QtGui.QButtonGroup(self)
        
        for i in xrange(0, 4):
            button = QtGui.QPushButton("Button" + str(i), self)
            
            self.group.addButton(button, i)
            self.layout.addWidget(button)
        
        self.connect(self.group, QtCore.SIGNAL("buttonClicked(QAbstractButton *)"), self.OnClick);
        self.setLayout(self.layout)
        
    def OnClick(self, button):
        if(QtGui.QMessageBox.warning(self, "Ololo", "Remove button?", QtGui.QMessageBox.Ok, QtGui.QMessageBox.Cancel) == QtGui.QMessageBox.Ok):
            button.setParent(None)
            self.group.removeButton(button);
            self.layout.removeWidget(button)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Разработка GUI | Следующая тема »


 




[ Время генерации скрипта: 0.0402 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.