はんぎょねこの憂鬱

耳から変な汁が出てきた

ねんがんの GPD Pocket をてにいれたぞ

とりあえず一台ゲットしたので適当レビュー 使っているうちに意見をコロコロ変える可能性あります スペックおさらい OS Ubuntu 16.04 LTS or Windows 10 Home CPU Quad-core 1.6GHz GPU Integrated processor RAM 8GB ストレージ容量 128GB ( Samsung MDGAG…

PySide 編集可能なQTreeWidgetを作る

import sys from PySide import QtCore, QtGui class MyTreeWidget(QtGui.QTreeWidget): def __init__(self): super().__init__() self.setHeaderHidden(True) self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.customContextMenuRequested.con…

PySide movable and resizable widget without frame

import sys, enum from PySide import QtCore, QtGui class Item(QtGui.QLabel): Manipilate = enum.Enum('Manipilate', 'none move resize_l resize_r') def __init__(self, text): super().__init__(text) self.setStyleSheet('background-color: white; b…

PySide Progressbarを表示してみる

QProgressDialogを使うと一番簡単であります import sys from PySide import QtGui app = QtGui.QApplication(sys.argv) prog = QtGui.QProgressDialog('何か処理しています...', 'キャンセル', 0, 100, None, 0) prog.show() prog.setValue(50) sys.exit(ap…

QScrollAreaに固定されたヘッダーを表示する

import sys from PySide import QtGui class MyTable(QtGui.QWidget): def __init__(self): super().__init__() lo = QtGui.QHBoxLayout() lo.setContentsMargins(0, 0, 0, 0) lo.setSpacing(0) self.setLayout(lo) self._header = QtGui.QLabel('header') s…

PySide ドラッグでデータ受け渡し

import sys from PySide import QtCore, QtGui # ドラッグ&ドロップで色を受け渡す class WidgetItem(QtGui.QLabel): def __init__(self, color): super().__init__('') self._color = color self.setStyleSheet('border: 1px solid black;') self.setFixed…

PySide ドラッグでWidgetを移動させる

import sys from PySide import QtCore, QtGui # ドラッグで動くWidget class WidgetItem(QtGui.QLabel): def __init__(self): super().__init__('') self.setStyleSheet('border: 1px solid black; background-color: red;') self.setFixedSize(32, 32) sel…

Pythonゲームプログラミング #9 スクロール

#0 環境構築 #1 メインループ #2 画像表示 #3 アニメーション #4 キー入力 #5 サウンド #6 衝突判定 #7 ステートマシン #8 マップチップ #9 スクロール スクロール pygameを使ったゲームプログラミングについて説明していきます。 Windows10 Python3.6.1 pyg…

Pythonゲームプログラミング #8 マップチップ

#0 環境構築 #1 メインループ #2 画像表示 #3 アニメーション #4 キー入力 #5 サウンド #6 衝突判定 #7 ステートマシン #8 マップチップ #9 スクロール マップチップ pygameを使ったゲームプログラミングについて説明していきます。 Windows10 Python3.6.1 p…

Pythonゲームプログラミング #7 ステートマシン

#0 環境構築 #1 メインループ #2 画像表示 #3 アニメーション #4 キー入力 #5 サウンド #6 衝突判定 #7 ステートマシン #8 マップチップ #9 スクロール ステートマシン pygameを使ったゲームプログラミングについて説明していきます。 Windows10 Python3.6.1…

Pythonゲームプログラミング #6 衝突判定

#0 環境構築 #1 メインループ #2 画像表示 #3 アニメーション #4 キー入力 #5 サウンド #6 衝突判定 #7 ステートマシン #8 マップチップ #9 スクロール 衝突判定 pygameを使ったゲームプログラミングについて説明していきます。 Windows10 Python3.6.1 pygam…

Pythonゲームプログラミング #5 サウンド

#0 環境構築 #1 メインループ #2 画像表示 #3 アニメーション #4 キー入力 #5 サウンド #6 衝突判定 #7 ステートマシン #8 マップチップ #9 スクロール サウンド pygameを使ったゲームプログラミングについて説明していきます。 Windows10 Python3.6.1 pygam…

Pythonゲームプログラミング #4 キー入力

#0 環境構築 #1 メインループ #2 画像表示 #3 アニメーション #4 キー入力 #5 サウンド #6 衝突判定 #7 ステートマシン #8 マップチップ #9 スクロール キー入力 pygameを使ったゲームプログラミングについて説明していきます。 Windows10 Python3.6.1 pygam…

Pythonゲームプログラミング #3 アニメーション

#0 環境構築 #1 メインループ #2 画像表示 #3 アニメーション #4 キー入力 #5 サウンド #6 衝突判定 #7 ステートマシン #8 マップチップ #9 スクロール アニメーション pygameを使ったゲームプログラミングについて説明していきます。 Windows10 Python3.6.1…

Pythonゲームプログラミング #2 画像表示

#0 環境構築 #1 メインループ #2 画像表示 #3 アニメーション #4 キー入力 #5 サウンド #6 衝突判定 #7 ステートマシン #8 マップチップ #9 スクロール 画像表示 pygameを使ったゲームプログラミングについて説明していきます。 Windows10 Python3.6.1 pygam…

Pythonゲームプログラミング #1 メインループ

#0 環境構築 #1 メインループ #2 画像表示 #3 アニメーション #4 キー入力 #5 サウンド #6 衝突判定 #7 ステートマシン #8 マップチップ #9 スクロール メインループ pygameを使ったゲームプログラミングについて説明していきます。 Windows10 Python3.6.1 p…

Pythonゲームプログラミング #0 環境構築

#0 環境構築 #1 メインループ #2 画像表示 #3 アニメーション #4 キー入力 #5 サウンド #6 衝突判定 #7 ステートマシン #8 マップチップ #9 スクロール 環境構築 pygameを使ったゲームプログラミングについて説明していきます。 Windows10 Python3.6.1 pygam…

PySide: Asynchronously Text Filtering

QThreadを使った非同期テキストフィルタ ほしいもの 別スレッドで実行されるテキストフィルタ 一定時間ごとにフィルタリング済みのデータを返す 途中でキャンセルもしたい コード from PySide import QtCore, QtGui import datetime import time class Filte…

PySide: Save and Restore QDockWidgets

Dockの生成削除込みでQSettings保存 適当に調べた QSettingsを使用してWidgetの位置やサイズを保存できる 復元する前にWidgetを生成してobjectNameを設定しておく必要がある DockWidgetを追加・削除できるプログラムではその状況も保存する必要がある QMainW…

PySide: Suppress the clicked signal when emitting a contextMenuRequested signal

右クリックでコンテキストメニューを出すときに一緒にclickedシグナルが発信されると困るケースがあった。mousePressEventとmouseReleaseEventを継承して左クリックのみに反応するようにしてこれを回避した from PySide import QtGui, QtCore import sys cla…

PySide リソース一覧の取得

qrcファイルの中身がこんな感じだったら <RCC version="1.0"> <qresource> <file>folder/hogehoge.txt</file> <file>folder/fugafuga.bin</file> <file>folder/piyopiyo.jpg</file> </qresource> </RCC> こんな感じでpyに変換すると思うのですが pyside-rcc -o resource.py -py3 resource.qrc こんな感じで一覧を取得できます from PySide import QtCo…

QTreeWidgetItemでアイコン複数表示

HTMLを表示するdelegateを用意するのが手っ取り早い コードはここらへんを参考に stackoverflow.com PyQt版の回答をゴニョゴニョして作成 import sys from PySide import QtCore, QtGui class RichTextDelegate(QtGui.QStyledItemDelegate): def paint(self,…

Raspberry Piでトイレにクラシック音楽を流す

人がきたら音楽を流す装置をトイレに設置しました(割と好評) ケースはRaspberry Piの箱に100均で買った折り紙を貼って作成 本体のUSBでBluetoothスピーカーを充電 必要なもの Raspberry Pi 3 Model B SDカード 電源アダプター 人感センサー Bluetoothスピ…

Haskell環境構築メモ

これは自分のためのメモだから良い子は見ちゃダメ OS: Windows10, IDE: Atom インストール 1. Haskell PlatformからインストーラをDLして実行 www.haskell.org 適当にNext押してたら%APPDATA%\local\binにインストールされてパスが通った stackのセットアッ…

Python3でSkypeにメッセージ送信

skpyを使います 準備 pip install skpy 最近のイベントからグループチャットを検索してメッセージ送信 from skpy import Skype def send(user, password, topic, message): sk = Skype(user, password) for c in sk.chats.recent(): chat = sk.chats[c] if h…

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 を使いました 下記サイトを参考に github.com こんな感じでインストール cd ~ git clone https://github.com/metachris/RPIO.git --branch v2 --single-branch cd RPIO sudo python3.4 setup.p…

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…