読者です 読者をやめる 読者になる 読者になる

はんぎょねこの憂鬱

耳から変な汁が出てきた

PySide ドラッグ&ドロップ

忘れがちなポイント setAcceptDrops(True) 各イベントでevent.accept ファイルパスはTextじゃなくてURL from PySide import QtCore, QtGui import sys, os class DragAndDrop(QtGui.QLabel): def __init__(self): super().__init__() self.setText('Drag and…

QMessageBoxでチョロっとダイアログ表示

import sys from PySide import QtGui app = QtGui.QApplication(sys.argv) icon = None QtGui.QMessageBox.about(icon, 'About', 'Hello.') QtGui.QMessageBox.question(icon, 'Question', 'Are you dead?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)…

Pythonでウインドウハンドル取得してGetClientRectしてみる

WIN32から離れられない貴方へ import sys from PySide import QtGui import ctypes class RECT(ctypes.Structure): _fields_ = [('left', ctypes.c_long), ('top', ctypes.c_long), ('right', ctypes.c_long), ('bottom', ctypes.c_long)] class TestWidget(…

Widgetを等倍で中央寄せさせておきたい!

QScrollAreaのresizeEventを継承してゴニョゴニョしたら割と簡単にできた import sys from PySide import QtCore, QtGui class AlwaysCenterAlign(QtGui.QScrollArea): def __init__(self): super().__init__() self.setAlignment(QtCore.Qt.AlignCenter) se…

RaspberryPi 3 RPIOでサーボモーターを動かす

RPIOをインストール モーターは SG90 Digital を使いました 下記サイトを参考に github.com こんな感じでインストール cd ~ git clone https://github.com/metachris/RPIO.git --branch v2 --single-branch cd RPIO sudo python3.4 setup.py install スクリ…

QActionでコードもすっきり

メニューやツールバーを実装するときはQPushButtonやコールバックをガリガリ書くのではなくQActionを作る。QActionオブジェクトを作成しておけば、複数のメニューやツールバーをまたいでも、ひとつのQActionオブジェクトで挙動を定義できるし、QActionGroup…

ラズパイ起動時にBluetooth接続してwav再生

自分の環境でちゃんと動く記事が無かったのでメモ。設定ファイルをあちこち編集するのは好きじゃないのでbash_profileで頑張った。Linuxめんどい。 環境 Raspberry Pi 3 Model B OS 2016-11-25-raspbian-jessie 1. モジュールインストール sudo apt-get inst…

Python lambda式の落とし穴

Pythonのクロージャ内部で使われている変数は通常、実行時に値が評価されます。for文などと組み合わせてlambda式やローカル関数を使うときは、ちょっと気を付けないといけません。 例えば、0~4まで出力する関数を5つ用意したいとき # 関数作る functions = …

QDockWidgetに追加したWidgetが表示されないとき

setWidget()を使え

QListWidget コンテキストメニュー

# conding: utf-8 import sys from PySide.QtCore import * from PySide.QtGui import * # 右クリックでカレントの行を削除 def customMenu(widget, pos): if len(widget.selectedItems()) == 0: return action = QAction('Remove', widget) action.triggere…

QScrollAreaの罠にハマる

いつものようにLayoutにButtonを追加するが 一定サイズ以下に縮まないしスクロールバーも出ない # conding: utf-8 import sys from PySide.QtCore import * from PySide.QtGui import * # entry point if __name__ == '__main__': myapp = QApplication(sys.…

QListWidget 文字列フィルタリングしてみる

文字列でフィルタリングできるリストビューがあれば 人生の複雑な状況も整理できるかもしれない # conding: utf-8 import sys from PySide.QtCore import * from PySide.QtGui import * class MyListWidget(QWidget): def __init__(self, data, parent=None)…

QComboboxにはOrderedDictが良さげ

Comboboxのインデックスと処理が1:1だと便利 dictは追加した要素を不定の順序でイテレートするので 挿入順を保存したい場合は OrderedDict を使う # conding: utf-8 import sys from PySide.QtCore import * from PySide.QtGui import * import collections …

Signalの使いかたをよく忘れるのでメモ

これでGUIピタゴラ装置作ったら仕事してる振りできる # conding: utf-8 import sys from PySide.QtCore import * from PySide.QtGui import * # ほげ~ class Hoge(QLabel): # 文字列を引数に渡すシグナルを定義 textChanged = Signal(str) # 初期化 def __i…

C++構造体のXmlシリアライザを自動生成したい

C#だったら属性を書くだけで済むけれど、C++はそういうわけにはいかないのでXMLで定義したフォーマットからコードを生成するスクリプトを書いた。 まずはデータフォーマットをXmlで表記する。 <Root> <Type name="Scene"> <Type name="Material"> <Type name="Property"> <value name="Name" type="String"/> <value name="Value" type="Float[]"/> </Type> </type></type></root>

TransBook T90Chi T90CHI-32G を買ったあとやった事

コード書き専用マシンとして ¥30,000 で購入 不要なソフトウェアを削除 Kingsoft office iフィルタ McAfee Asus Live Update Asus Web Storage Asus Screen Saver Asus Splendid Video Enhancement Technology Asus ATK Package Windows10 にアップグレード…

ffmpeg flv to mp4

ffmpegを使ってflvをコンバートしたら動画がカクカクになってしまったのでメモ 環境 Windows 8.1 + ffmpeg static build 現象 WMPではカクカクする GOM Playerで見ると普通の動画に見える Chromeではスローモーション再生 詳細情報を見るとフレームレートが1…

QPixmap from PIL Image

PILで作った画像を表示するときに便利 # conding: utf-8 import sys from PySide.QtCore import * from PySide.QtGui import * from PIL import Image, ImageQt # entry point if __name__ == '__main__': myapp = QApplication(sys.argv) # PILで画像読み込…

PySide Dock配置とメニューからの表示切替

よく使うので自分用にメモ # conding: utf-8 import sys from PySide.QtCore import * from PySide.QtGui import * # entry point if __name__ == '__main__': myapp = QApplication(sys.argv) wnd = QMainWindow() # Dock Widgets wnd.__c = QTextEdit(wnd)…

DirectXでOBJファイル表示

DirectXでOBJファイルを表示する。 時間はかけたくないのでライブラリと3Dデータを使う。 こんな感じで簡単に読み込み処理が書ける。 #include "tiny_obj_loader.h" void CreateBuffer(ID3D11Buffer** io_buf, UINT in_byteWidth, UINT in_bindFlags, const …

Node Graphでテクスチャ生成

Substance買うお金無い Python # conding: utf-8 import math from PIL import Image PI = 3.1415926536 # 正弦 class Sin: def __init__(self, in_x): self.x = in_x def __call__(self): return math.sin(self.x()) # 余弦 class Cos: def __init__(self, …

Perlin Noise Marble

noiseモジュールをインストールしてPerlin Noiseを使ってみた。 Python # conding: utf-8 from PIL import Image import math import noise w = 128 h = 128 pn_freq_u = 10.0 pn_freq_v = 10.0 pn_octave = 3 wv_freq_x = 3.1416 * 2.0 * 10.0 wv_noise_sca…

Turing Patterns

Gray-Scottモデルの反応拡散式で模様を自動生成してみました。 C++ pythonでは処理速度が厳しいため反応拡散の計算はC++で書きました。 #define BOOST_PYTHON_STATIC_LIB #include <boost/python.hpp> #include <vector> #include <algorithm> boost::python::list Create(int in_w, int in_h, flo</algorithm></vector></boost/python.hpp>…

テキストから Node Graph 作成

Node Graph のデータをテキストにしてみます。 テキストデータ 各行でノードを定義する。 左辺に名前、右辺に定義を書く。 右辺がリストとして解釈された場合、第一要素には型名、第二要素には接続元のリストを記述する。 リスト型で解釈されない場合は値を…

Node Graph Architecture

Substance Designer www.youtube.com 巷で流行りの設計。 Python 入出力が定義された各ノードを連結してグラフを作成し、グラフの値がほしいときにノードを辿って必要な解決をおこなう。 # conding: utf-8 # 値を保持するだけのノード class Value: def __in…

PySideでDirectXウインドウを表示してみる

↑PySideで表示したWindowにDirectXの画面を表示しています。 C++ pyd用のプロジェクトを作成 DirectXのTutorialをコピペしてInitWindow、WinProcなどの不要な関数を削除 InitDeviceでウインドウハンドルを受け取るように変更 boost::pythonを使ってDirectXの…

boost::pythonでC++のコードをpythonから呼んでみる

まずは単純な関数やクラスを自作してpythonから読んでみます。 C++ いつものようにdllプロジェクトを作成してboostとpythonのlibをリンクします。 出力されるファイルの拡張子をdllからpydに変更しておきます。 #define BOOST_PYTHON_STATIC_LIB #include <boost/python.hpp> c</boost/python.hpp>…

てすと

うあああああああああああああんfどふぁ;なw;えf