2016/10/11(火) [n年前の日記]
#1 [python] PySide勉強中
Python + PySide を使って、マウスボタンを押してドラッグするとウインドウ内に何かを描く、みたいな処理をしてみたい。
こんな感じだろうか…。
_drawing_pyside_3.py
_ball.png
こんな感じだろうか…。
_drawing_pyside_3.py
""" PySideでウインドウに描画。 空の QPixmap を作ってそこに描画する例。 マウス左ボタンを押して動かすとその位置に円を描画する。 参考ページ: 「プログラムでシダを描画する」をPythonで描画過程まで出力する - Qiita http://qiita.com/tatuno/items/23d291dd3bf01693bde4 [Python][PySide] 簡単なメニュー付きウィンドウを表示する | unlinked log http://log.noiretaya.com/?p=250 PyQtでのグラフィックス その1 (QWidgetに直接描画する) - bravo's blog http://bravo.hatenablog.jp/entry/2016/02/07/084048 """ import sys from PySide.QtCore import * from PySide.QtGui import * width = 480 height = 360 brush_use = True brush_filename = "ball.png" class MyWidget(QWidget): """描画担当ウィジェット""" def __init__(self, parent): super(MyWidget, self).__init__(parent) self.mouseOnFlag = False # 空のQPixmapを生成。以後はここに描画していく self.pixmap = QPixmap(width, height) self.pixmap.fill() # ブラシ画像を読み込み self.brush_pixmap = QPixmap(brush_filename) def paintEvent(self, event): qp = QPainter() qp.begin(self) qp.drawPixmap(0, 0, self.pixmap) qp.end() def mousePressEvent(self, event): """ マウスボタンを押した """ if event.button() == Qt.LeftButton: self.mouseOnFlag = True self.mydraw(event) def mouseMoveEvent(self, event): """ マウスを動かした """ if self.mouseOnFlag: self.mydraw(event) def mouseReleaseEvent(self, event): """ マウスボタンを離した """ if event.button() == Qt.LeftButton: self.mouseOnFlag = False def mydraw(self, event): """ 描画処理 """ qp = QPainter() qp.begin(self.pixmap) # マウス座標取得 x = event.pos().x() y = event.pos().y() if brush_use: # ブラシ画像で描画 x -= self.brush_pixmap.width() / 2 y -= self.brush_pixmap.height() / 2 qp.drawPixmap(x, y, self.brush_pixmap) else: # 円を描画 qp.setBrush(QColor(0, 0, 128)) qp.setPen(QColor(0, 64, 255)) qp.drawEllipse(event.pos(), 20, 20) # 点を描画する例 # qp.drawPoint(x, y) qp.end() self.repaint() class MainWindow(QMainWindow): """ メインウインドウ """ def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.resize(width, height) # self.setFixedSize(width, height) # self.refresh_rate = 200 # メニューバー作成 menubar = QMenuBar() file_menu = QMenu("&File", self) exit_action = file_menu.addAction("&Exit") exit_action.setShortcut("Ctrl+Q") exit_action.triggered.connect(qApp.quit) menubar.addMenu(file_menu) self.setMenuBar(menubar) # ステータスバー作成 self.statusBar() # 描画するウィジェットを作成して真ん中に配置 widget = MyWidget(self) self.setCentralWidget(widget) def main(): app = QApplication(sys.argv) window = MainWindow() app.setActiveWindow(window) window.show() sys.exit(app.exec_()) if __name__ == '__main__': main()使ったブラシ画像は以下。
_ball.png
[ ツッコむ ]
#2 [nitijyou] 市の健康診断に行ってきた
AM09:30-AM10:40まで。それほど混雑してる感じではなかったけど、血圧測定と血液検査で待たされて、1時間以上かかった感じ。
毎年、北団地の集会所で受けてたけど、今年は期日を把握してなくてうっかり機会を逃してしまい、もう少し遠い、森宿区民会館で受けることに。場所も把握してなければ中に入ったこともなかったけど、結構綺麗な建物だなと感心(?)を。
親父さんの電動自転車を借りて行ってきたけど…。区民会館が面してる道路が、歩道が無いぐらいに細いのに何故か異様に車の通行量が多く、しかもどの車もビュンビュン飛ばすので、自転車で通るのも一苦労。あの調子だといつか事故が起きそうな気がする。かといってどう見ても道路を広げる等の工事ができそうにない状態だし。一般住宅に加えて工場までギリギリに建ってるし。どうするんだろ。どうしようもないか。
毎年、北団地の集会所で受けてたけど、今年は期日を把握してなくてうっかり機会を逃してしまい、もう少し遠い、森宿区民会館で受けることに。場所も把握してなければ中に入ったこともなかったけど、結構綺麗な建物だなと感心(?)を。
親父さんの電動自転車を借りて行ってきたけど…。区民会館が面してる道路が、歩道が無いぐらいに細いのに何故か異様に車の通行量が多く、しかもどの車もビュンビュン飛ばすので、自転車で通るのも一苦労。あの調子だといつか事故が起きそうな気がする。かといってどう見ても道路を広げる等の工事ができそうにない状態だし。一般住宅に加えて工場までギリギリに建ってるし。どうするんだろ。どうしようもないか。
[ ツッコむ ]
以上、1 日分です。