Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2016, 14:57   #11
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Ого спасибо огромное! Вечером приду домой опробую отпишусь.
kos94ok вне форума Ответить с цитированием
Старый 29.10.2016, 21:37   #12
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Спасибо все работает! Если не сложно можно объяснить 2 момента.
1) Переменная x и y в main.py имеет нижний регистр, а в классе TabelWindow она объявляется в верхнем с методом класса,разве регистр не учитывается? (или я не совсем понял как прошла передача аргумента)
2)А если потребуется на много больше передавать аргументов, то не проще все таки через модуль это сделать?Что бы код был яснее.

Спасибо еще раз.
kos94ok вне форума Ответить с цитированием
Старый 29.10.2016, 22:46   #13
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Про аргументы, можно даже вот так. Это просто, на ходу придуманый пример.

Код:

_list = [0, 343, 434, 2232];
_dict = {'A': 45, 'XXX': 777};

_all_in_one = {
    'list'  : _list,
    'dict' : _dict
};

TableWindow( 33, 44, _list, _dict, _all_in_one );
Обратите внимание на аргумент с default значением. "parent=None".
Если он есть, то должен быть всегда последним в списке аргументов

Код:

class TableWindow(QtGui.QWidget):
    def __init__(self, int_0, int_1, my_list, my_dict, all_data, parent=None):

        print( int_0 ); # >> 33
        print( int_1 ); # >> 44
        print( my_list[1] ); # >> 343
        print( my_dict['dict']['XXX'] ); # >> 777

Так как вы хотели передать, вообще не возможно передать.

Придется делать:

промежуточный класс, в который кидать аргументы, потом в другом классе ихбрать. но как вы понимаете, в нем нет смысла если я могу работать на прямую с конструктором, без посредников.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 29.10.2016 в 22:49.
pompiduskus вне форума Ответить с цитированием
Старый 03.11.2016, 23:45   #14
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Есть еще вопрос, я все перепробовал. Читал и гуглил но не смог...вот код
Код:
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore

class Icons(QtGui.QWidget):
    def __init__(self, parent=None):
           QtGui.QWidget.__init__(self, parent)



           self.table = QtGui.QTableWidget(self)
           self.table.setRowCount(3)
           self.table.setColumnCount(3)
           self.table.setGeometry(0, 29, 250, 150)
           self.table.show()


           self.setGeometry(300, 300, 250, 150)
           self.setWindowTitle('Icon')

           self.btn = QtGui.QPushButton("", self)
           self.btn.setGeometry(0, 0, 80, 30), self.btn.sizeHint(), self.btn.resize(30, 30), self.btn.setIcon(QtGui.QIcon("ico.png"))
           self.connect(self.btn, QtCore.SIGNAL("clicked()"), self.on_clicked_btn)
           self.btn.show()


    def on_clicked_btn(self):
        newitem = QtGui.QTableWidgetItem("ico.png")
        self.table.setItem(self.table.currentRow(), self.table.currentColumn(), newitem)





app = QtGui.QApplication(sys.argv)
qb = Icons()
qb.show()
sys.exit(app.exec_())
Нужно передать картинку в ячейку, я смог только передать текст, что уже приятно.
Помогите если не сложно, спасибо.
kos94ok вне форума Ответить с цитированием
Старый 03.11.2016, 23:50   #15
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Что конкретно нужно ? Задать флн какой-то яйчейке ?

В документации написано, можно так, но не уверез что это даст ожидаемый варинт.

Код:
QTableWidgetItem.setBackground ( QBrush(QImage('image.png')) );
Это пусть тут побудет. Может пригодится
http://pyqt.sourceforge.net/Docs/PyQ...idgetitem.html

Если что, опишите то что хотелось бы получить. Если ни кто не поможет. Я завтра отвечу.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 03.11.2016 в 23:57.
pompiduskus вне форума Ответить с цитированием
Старый 04.11.2016, 00:26   #16
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Конкретно нужно вставить в ячейку картинку.Нажатие на ячейку потом на кнопку и ячейка принимает картинку. Документацию читал но не смог ни чего сделать.
В идеале конечно хочу что бы нажал на кнопку потом на ячейку и в ячейке появлялась картинка, но пока не допер как сделать.
kos94ok вне форума Ответить с цитированием
Старый 04.11.2016, 19:51   #17
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Так все и есть, как я вчера написал, так оно и работает.

Код:
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore

class Icons(QtGui.QWidget):
    def __init__(self, parent=None):
           QtGui.QWidget.__init__(self, parent);

           self.setGeometry(300, 300, 500, 300);
           self.setWindowTitle('Icon');


           self.table = QtGui.QTableWidget(self);
           self.table.setRowCount(3);
           self.table.setColumnCount(3);
           self.table.setGeometry(0, 40, 450, 250);
           self.table.show();


           self.btn = QtGui.QPushButton("button", self);
           self.btn.setGeometry(0, 0, 120, 30);
           self.connect(self.btn, QtCore.SIGNAL("clicked()"), self.on_clicked_btn);
           self.btn.show();

    def on_clicked_btn(self):
        newitem = QtGui.QTableWidgetItem("[DATA]");
        newitem.setBackground ( QtGui.QBrush( QtGui.QImage('image.png')) );

        self.table.setItem(self.table.currentRow(), self.table.currentColumn(), newitem);


app = QtGui.QApplication(sys.argv);
qb = Icons();
qb.show();
sys.exit(app.exec_());
Если посмотреть документацию, то там четко видно, что QTableWidgetItem() имеет 4 конструктора, а именно

Код:
1 __init__ (self, int type = QTableWidgetItem.Type)
2 __init__ (self, QString text, int type = QTableWidgetItem.Type)
3 __init__ (self, QIcon icon, QString text, int type = QTableWidgetItem.Type)
4 __init__ (self, QTableWidgetItem other)
И под ваш случай, навеное лучще всего подошел бы номер 3, так как он принемает сразу картинку и информация в виде строки.

Значит ваша функция может выглядеть вот так.

Код:

def on_clicked_btn(self):
    newitem = QtGui.QTableWidgetItem( QtGui.QBrush( QtGui.QImage('image.png')), "[DATA]" );
    self.table.setItem(self.table.currentRow(), self.table.currentColumn(), newitem);
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 04.11.2016 в 19:56.
pompiduskus вне форума Ответить с цитированием
Старый 04.11.2016, 22:17   #18
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Вот этот код работает но картинка не появляется, только надпись [DATA]
Код:
          newitem = QtGui.QTableWidgetItem("[DATA]");
          newitem.setBackground ( QtGui.QBrush( QtGui.QImage('image.png')) );

          self.table.setItem(self.table.currentRow(), self.table.currentColumn(), newitem);
А вот этот
Код:
        newitem = QtGui.QTableWidgetItem( QtGui.QBrush( QtGui.QImage('image.png')),"[DATA]");
        self.table.setItem(self.table.currentRow(), self.table.currentColumn(), newitem);
Выдает ошибку
line 28, in on_clicked_btn
newitem = QtGui.QTableWidgetItem(QtGui.QBrush (QtGui.QImage("ico.png")), "[DATA]")
TypeError: arguments did not match any overloaded call:
QTableWidgetItem(int type=QTableWidgetItem.Type): argument 1 has unexpected type 'QBrush'
QTableWidgetItem(str, int type=QTableWidgetItem.Type): argument 1 has unexpected type 'QBrush'
QTableWidgetItem(QIcon, str, int type=QTableWidgetItem.Type): argument 1 has unexpected type 'QBrush'
QTableWidgetItem(QTableWidgetItem): argument 1 has unexpected type 'QBrush'
Хотя оба кода одинаковы
Я не понимаю почему картинку не прикрепить.

Последний раз редактировалось kos94ok; 04.11.2016 в 22:24.
kos94ok вне форума Ответить с цитированием
Старый 04.11.2016, 22:37   #19
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Обратите внимание на количество отступов перед строками.
также путь к картинки должен быть верный.

Да и я походу не верно передал паараметры. Нужно QIcon, а я передал QBrush.

Если не горит, пока берите первый рабочий вариант. Ато я с мобилы, жесть как не удобно писать.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 04.11.2016 в 22:45.
pompiduskus вне форума Ответить с цитированием
Старый 04.11.2016, 23:01   #20
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

TypeError: QIcon(): argument 1 has unexpected type 'QImage'

Поменял, не работает, отступы и путь к картинке верны.


Вот нашел в гугле http://codeprogress.com/python/libra...mage&version=4
Интересно и работает.
Как же мне то замутить)
вот тут только на C++ http://www.codeprogress.com/cpp/libr...ackgroundImage

Последний раз редактировалось kos94ok; 05.11.2016 в 00:20.
kos94ok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь Ляйсан9517 Помощь студентам 5 02.04.2014 15:34
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12