質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2419閲覧

【python3】pyqt5で画像を任意の位置に表示したい

uc200

総合スコア32

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/11/25 22:34

###前提・実現したいこと
python3.5を使っています。pyqt5で作ったウィジットの任意の位置に画像を表示したいです

###発生している問題・エラーメッセージ

画像の表示位置を指定する方法がよく分かりません。

###該当のソースコード

python3

1import sys 2from PyQt5.QtWidgets import (QWidget, QHBoxLayout, 3 QLabel, QApplication) 4from PyQt5.QtGui import QPixmap 5from PyQt5.QtWidgets import QWidget, QLabel, QApplication 6 7 8 9class Example(QWidget): 10 11 def __init__(self): 12 super().__init__() 13 14 self.initUI() 15 16 17 def initUI(self): 18 19 hbox = QHBoxLayout(self) 20 # QPixmapオブジェクト作成 21 pixmap = QPixmap("gazo.jpg") 22 23 # ラベルを作ってその中に画像を置く 24 lbl = QLabel(self) 25 lbl.move(100,100) 26 lbl.setPixmap(pixmap) 27 28 hbox.addWidget(lbl) 29 self.setLayout(hbox) 30 31 self.setGeometry(10, 10, 1000, 1000) 32 self.setWindowTitle('Absolute') 33 self.show() 34 35 36if __name__ == '__main__': 37 38 app = QApplication(sys.argv) 39 ex = Example() 40 sys.exit(app.exec_()) 41 42

###試したこと
画像を表示するコードとして、ググったら次の様なコードが出てきました。(これはウィジットのサイズを画像に合わせるコードです。)

import sys from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QLabel, QApplication) from PyQt5.QtGui import QPixmap class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout(self) # QPixmapオブジェクト作成 pixmap = QPixmap("gazo.jpg") # ラベルを作ってその中に画像を置く lbl = QLabel(self) lbl.setPixmap(pixmap) hbox.addWidget(lbl) self.setLayout(hbox) self.move(300, 200) self.setWindowTitle('gazo') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())

これは正常に動きました。次に、ウィジットの絶対位置にラベルを書くコードとして、次のようなものがありました。

import sys from PyQt5.QtWidgets import QWidget, QLabel, QApplication class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # ラベル名の設定 lbl1 = QLabel('Zetcode', self) # ラベルをx=15,y=10へ移動 lbl1.move(15, 10) lbl2 = QLabel('tutorials', self) lbl2.move(35, 40) lbl3 = QLabel('for programmers', self) lbl3.move(55, 70) self.setGeometry(300, 300, 250, 150) self.setWindowTitle('Absolute') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())

これも正常に動きました。そこで、この二つのコードを参考に該当のコードを書きました。25行目の
lbl.move(1000,1000)
で画像の表示位置が変わるかと思いましたが、そんなことはありませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

次のコードでできました。

python3

1import sys 2from PyQt5.QtWidgets import QApplication, QWidget, QLabel 3from PyQt5.QtGui import QIcon, QPixmap 4 5class App(QWidget): 6 7 def __init__(self): 8 super().__init__() 9 self.title = 'PyQt5 image - pythonspot.com' 10 self.left = 300 11 self.top = 300 12 self.width = 1200 13 self.height = 1000 14 self.initUI() 15 16 def initUI(self): 17 self.setWindowTitle(self.title) 18 self.setGeometry(self.left, self.top, self.width, self.height) 19 20 # Create widget 21 label = QLabel(self) 22 label.setPixmap(QPixmap('gazo.jpg')) 23 label.move(500,50) 24 25 26 self.show() 27 28if __name__ == '__main__': 29 app = QApplication(sys.argv) 30 ex = App() 31 sys.exit(app.exec_()) 32

もっと簡単に書ける方法などあったら是非教えてください

投稿2017/11/30 01:28

uc200

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問