はんぎょねこの憂鬱

さあ、ふるえるがいい

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)…