Russian Qt Forum
Ноябрь 24, 2024, 18:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как просто показать картинку на форме???  (Прочитано 6930 раз)
Пытон
Гость
« : Январь 13, 2012, 10:58 »

Код
Python
from PyQt4 import QtGui, QtCore
import sys
 
 
class form(QtGui.QWidget):
   def __init__(self, parent = None):
       QtGui.QWidget.__init__(self, parent)
       self.pic = QtGui.QImage("С:\1.jpg")
 
 
if __name__ == '__main__':
   app = QtGui.QApplication(sys.argv)
   f = form()
   f.show()
   sys.exit(app.exec_())
 
 

И чего дальше? Картинка не появляется.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Январь 13, 2012, 11:15 »

А разве в питоне обратный слэш дублировать не нужно?
Записан

Qt 5.11/4.8.7 (X11/Win)
iroln
Гость
« Ответ #2 : Январь 13, 2012, 11:27 »

Слэш дублировать нужно - это во-первых.
Во-вторых, с какого фига эта картинка (self.pic) должна показаться на форме? Рисовать можно только в методе paintEvent. Картинку надо рисовать методом painter.drawImage

Код
Python
class Some(QWidget):
   def paintEvent(self, event):
       painter = QPainter(self)
       painter.drawImage(0, 0, self.pic)
 
« Последнее редактирование: Январь 13, 2012, 11:29 от iroln » Записан
Пытон
Гость
« Ответ #3 : Январь 13, 2012, 13:20 »

спасибо
« Последнее редактирование: Январь 13, 2012, 13:38 от Пытон » Записан
Пытон
Гость
« Ответ #4 : Январь 13, 2012, 15:08 »

Блин! А как теперь эту картинку в контейнер засунуть? Имею ввиду QHBoxLayout.
Записан
iroln
Гость
« Ответ #5 : Январь 13, 2012, 15:43 »

В компоновщик надо засовывать не картинку, а виджет на котором рисуешь. paintEvent определяешь соответственно в том самом виджете, который засовываешь в компоновщик.

По-хорошему надо делать так:
1. Создаёшь пользовательский виджет на основе QWidget (например, называешь его MyImageView).
2. Определяешь у этого виджета API (сигналы, слоты)
3. Используешь этот виджет как обычный Qt-виджет, пихаешь его в компоновщик и т.д.
« Последнее редактирование: Январь 13, 2012, 15:44 от iroln » Записан
Пытон
Гость
« Ответ #6 : Январь 13, 2012, 17:31 »

Создавать новый класс, чтобы просто расположить на форме картинку?НепонимающийШокированный
Записан
mutineer
Гость
« Ответ #7 : Январь 13, 2012, 17:40 »

Может расположить на форме QLabel, а ей уже отдать QPixmap или QPicture с картинкой?
Записан
iroln
Гость
« Ответ #8 : Январь 13, 2012, 17:49 »

Создавать новый класс, чтобы просто расположить на форме картинку?НепонимающийШокированный
Смотря что ты делаешь. Если вьювер, то естественно. Если тебе просто какая-то картинка на форме нужна, используй QLabel, как уже сказали.
Записан
Пытон
Гость
« Ответ #9 : Январь 13, 2012, 17:53 »

Вот что я сделал:

Код
Python
MyImgLabel = QtGui.QLabel()
MyImgLabel.setPixmap(QtGui.QPixmap("picture.jpg"))
MyLayout.addWidget(MyImgLabel)
 

Полностью выглядит так:
Код
Python
from PyQt4 import QtGui, QtCore
import sys
 
 
class form(QtGui.QWidget):
   def __init__(self, parent = None):
       QtGui.QWidget.__init__(self, parent)
       # создаём метку-надпись
       MyImgLabel = QtGui.QLabel()
       # засовываем в неё картинку
       MyImgLabel.setPixmap(QtGui.QPixmap("picture.jpg"))
 
       # создаём компоновщик (по-моему контейнер)
       MyLayout = QtGui.QHBoxLayout()
       # засовываем в контейнер метку с "сидящей" в ней картинкой
       MyLayout.addWidget(MyImgLabel)
       # указываем его как основной для нашей формы
       self.setLayout(MyLayout)
 
 
if __name__ == '__main__':
   app = QtGui.QApplication(sys.argv)
   f = form()
   f.show()
   sys.exit(app.exec_())
 

И усё, что мне требовалось!  Подмигивающий
« Последнее редактирование: Январь 13, 2012, 17:59 от Пытон » Записан
Пытон
Гость
« Ответ #10 : Январь 13, 2012, 17:56 »

Блин! Получилось, типа я такой умный, типа сам догадался!   Смеющийся
Просто, уважаемые, пока я писал своё сообщение, вы успели свои написать с аналогичным же предложением.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.085 секунд. Запросов: 23.