スキップしてメイン コンテンツに移動

RaspberryPi2で使うツールをPython(pyside)で作ってみた(´;ω;`)

こんばんわ(; ・`д・´)

(`・д´・ ;)少しショックなことがあってこんな表情をしています。

実は、前回のブログで書いたミニゲームのチョコゲットですが、
バレンタインという大イベントにのっかって
モゲラさんで1日で500アクセスくらいいっちゃうかなー( ^ω^)タハー
とか、ひそかに期待していたのにバレンタイン効果ほぼゼロ
3週間経過した今も合計で300もいかず失速中です(´;ω;`)

まぁ、あれです。
1日半で作った作品だし、そうそう簡単にヒットはしないですよね。
そう思うことにします。ԅ( ˘ω˘ ԅ)


(2016/02/25 21:20追記)
ふりーむ!もDL数 23本 (9552位) と予想通りの残念な結果でしたが
ひとつだけ朗報がありました!
ふりーむ!で初めてレビューがつきました!!!ヽ( ´¬`)ノ ワ~イ !!
チョコゲット ChocolateGet のレビュー:無料ゲーム by ふりーむ!

本当にうれしいです!
このレビューを読むだけで、やる気が出てきます。
本当にありがとうございます(´;ω;`)<今度は感動の涙


作ったツールの話


で、タイトルのとおり、 RaspberryPi2 で使うツールを Python で作ったりしたので
久しぶりのブログのネタにでもしようかと思いアップしました。

はっきりいって、コマンド打てばいいじゃん?という人には不要なものだと思います。
GUI にすると何か落ち着くという方には需要があるかもしれません。

HSP とか Unity とかも GUI を作りやすいですが PySide もなかなか便利でした。

ツールの紹介画像の下にある .py のソースを python で実行するだけで動作します。
起動するための .bat や .sh についても後述します。

MountGUI.py について




MountGUI.py


MountGUI は LAN の外部 PC の共有フォルダをマウントして、アクセスするツールです。
Mount トグルボタンを OFF に戻すかウィンドウを閉じるとアンマウントを自動でします。

  • Mount Local Path はマウント先のローカルフォルダです。
  • Mount Remote Path は外部 PC の共有フォルダのパスです。
  • UserName は外部 PC のログインに使うユーザ名です。
  • Password は外部 PC のログインに使うパスワードです。
  • Option は mount コマンドのオプションです。既定では win 7 64bit にアクセスするために使ったオプションが設定されています。
これらの設定をすませて、 Mount すると Mount Local Path のフォルダにマウントされます。
Open ボタンを押すと Mount Local Path のフォルダを起動します。
Open では Raspberry Pi のエクスプローラ的なソフトである pcmanfm をコマンドで起動します。
おそらく他の環境ではうまく動かないので .py の Open ボタンのイベント処理を適宜変更して使ってください。

後で記述する .sh ファイルから呼び出すことで、入力欄の既定値を設定することができ、
起動後に変更しないで、より簡単にマウントすることができるようになります。

DragAndDropAndRunGUI.py について




DragAndDropAndRunGUI.py

DragAndDropAndRunGUI はファイルをドラッグ&ドロップすると、パスをリストに追加します。
リストを右クリックして表示された Remove メニューアイテムで削除できます。

画面の上半分がパスのリストです。画面の下半分はログです。

真ん中にあるチェックボックスで、ドラッグ&ドロップされたパスのフィルタリングができます。
Unique URL チェックボックスですでにリストにある同じ文字列のパスは追加しません。
File Only チェックボックスでフォルダのパスは追加しません。

 Run ボタンを押すと、リストのパスを使った処理を順次します。

Run で行う処理は .py ファイルを編集して書いてください。
処理結果をログ出力したい場合は addLog というメンバ関数を使うと出力できます。

ダブルクリックでやりたいというこだわり(甘え)


基本 Windows の GUI 環境でふにゃふにゃに育ってきた子なので
コマンド文字列ばりばり打って実行するというのが面倒に感じます。

一部の人からはお叱りを受けるかもしれませんが、
とりあえずダブルクリックすれば動くよ!
という状態が大好きなのです( ˘⊖˘)

そこで RaspberryPi でもこの .py をファイルをダブルクリックするだけで動作するように工夫してみました。
Windows なら .bat ファイルを作って、それをダブクリでバッチOKなことを知っているので、同じ感じをシェル .sh ファイルでやってみました。

.sh 自体はぐぐれば解説がたくさんでてきて、次のような感じでいけました。

MountGUI.py 起動用のシェル


MountGUI.py は引数を4つ与えると初期値が指定できます。
.sh ファイルごとにマウント先の情報を保持しておくと便利です。

#!/bin/bash
python MountGUI.py ./mount-point //192.168.1.20/shared username password

DragAndDropAndRunGUI.py 起動用のシェル


DragAndDropAndRunGUI.py は引数をとらないのでこんな感じです。

#!/bin/bash
python DragAndDropAndRunGUI.py

ちなみに Windows の .bat でやる場合はこんな感じです。

START C:\~\pythonw.exe DragAndDropAndRunGUI.py

シェルファイルのプロパティ設定


ここまでで .sh ファイルの設定はすみました。

しかし、 RaspberryPi2(Raspbian) で .sh ファイルをダブルクリックしても実行されずテキストエディタが開いてしまいます。

その場合は、右クリックのコンテキストメニューで、ファイルのプロパティを選択します。
現れたウィンドウのパーミッションタブの実行の選択肢がなしになっていると思うので、すべてなどに変更します。
そうすると、 .sh ファイルをダブルクリックすると実行するか編集するかが選択できるようになります。


Raspbian のファイルのプロパティウィンドウ
実行(E)の選択肢を[なし]から[すべて]に変更

近況について


twitter でウディタのコモンイベントについて少し書いたとおり、ウディタでちょっと作っています。

去年作った「デスチェリー農場」の派生作品で、今回はバトルで普通に戦えるようにしたいと思っています。
配布されているコモンイベントのおかげで最低限の実装はできていて、
ストーリーも大筋できたのですが細かなところでうまくつながらないところがあり止っています。

止まってはいるのですが、前作のむちゃくちゃな農場がなぜできたのかを妄想したりすることは楽しいです。
そのうちいいアイデアがうかんでストーリーがうまくつながったら早めにリリースしたいです。

Unity で作っているソフトはスローペースながら少しずつ進んでいます。
でもまだまだ実装できるかどうかすらあやしい段階で、試行錯誤の最中なので、
まだブログにのせられるようなことがありません。

RaspberryPi2 もまだまだ使い勝手をよくしたいことがあるのでちょくちょくいじろうと思います。

コメント

このブログの人気の投稿

QTableView で表を表示してみる

タイトルは駄洒落を狙っているわけではありません。 こんばんわ SakuraCrowd です。 今回は今作っているソフトの経過報告です。 最近のブログのパターンは、 「XXX作ったよ。これがスクリーンショットね。あとこんなこと思ったよ。」 という流れですが、 今日はできていないソフトの部分的な話なので、 いつもよりもプログラムちっくな話になると思います。(´Ծ_Ծ´)メガネノトキハマジメブッテル QTableView は GUIライブラリ Qt のクラスです。 それを Python で使うための PySide というライブラリを使っています。 某表計算ソフト っぽい表の GUI です。 このデータの日付が 09/01 なのでおそらくその日に   QTableView 使うぞ!(`・ω・´) とサンプルデータを作ったのでしょう。 Qt Designer という GUI エディタを使うとポトペタでウィンドウを設計できます。 選択できる GUI の中に QTableView と QTableWidget があります。 どちらも上のような表の GUI です。 QTableWidget は 簡単 に値をいれたりできます。 Qt Designer 上で直接編集 することができるので、 サンプルの表を簡単に作ることができます。 それに対して、 QTableView は Qt Designer 上では値を編集できません。たぶん。 QTableView の強みは MVC の構造 を使えることです。 名前のとおり QTableView は View です。 これにデータを管理している Model オブジェクトを設定して使います。 Model クラスを作る手間がかかりますが、 GUI の細かな操作をしなくても Model に応じた表を表示してくれます。 Model は QAbstractTableModel を 継承 して作ります。 コンストラクタで基底クラスの処理を呼び出し、いくつかの純粋仮想関数をオーバーライドします。 def __init__ ( self , parent= None , *args):

LibreOffice Writer 文書の差分 (WinMerge x TortoiseGit) + 社畜PCの原因と対策

お久しぶりです。皆様におかれましてはお風邪などをひかれてはいませんでしょうか。 春と秋だけあればいいのにヽ(`Д´)ノとつい思ってしまう SakuraCrowd です。 今日はいつものような製作日記ではなく、ちょっとした役立つメモを書きました。 タイトルにもあるとおり、 TortoiseGit への WinMerge の導入の仕方です。 今まではソースコードくらいしか差分で確認しなかったので、 TortoiseGit 標準の Diff ツールで問題なかったのですが、 LibreOffice の Writer が最近自分の中で便利だと話題になっていて、それを差分表示するためにちょっと調べてみました。 #Writer は、文章書いて、ちょっと絵をいれたり表を作るのに便利だと思います。 #リッチテキストのエディタを探していて、これが一番よさそうな気がしたので使ってます。 それとブログを書くときはあまり長く書かないつもりだった、 Win7 PC が社畜PCになってしまった際の原因と対策も後半に書きました。割と有用な情報かもしれませんので、時間がありましたらご覧下さい。 まずは TortoiseGit で Writer の odt ファイルを管理して、差分も普通に表示させる方法です。 WinMerge(+plugin) 導入手順 すでに TortoiseGit はインストールしてある前提ではなします。 1.信頼と実績の窓の杜様から WinMerge 日本語版をダウンロードします。 WinMerge - 窓の杜ライブラリ 私の PC は 64 ビット版なのでそちらを選びました。 2.WinMerge をインストールします。 フォルダを指定し普通にインストールできます。 インストール直前の設定で TortoiseGit をチェックしておくと自動的に TortoiseGit の利用する Diff ツールの設定を置き換えてくれるようです。 これの設定は TortoiseGit の設定の Diff ツールの項目で確認できます。 3.LibreOffice Writer のファイルを読むためのプラグインをダウンロードします。 ぐぐって出てくる英語版のDLサイトは応答がなかったりしましたが、日本語版は大

QWidget の選択時のデザインを CSS で変える方法

ひさびさに書きやすいネタができたので、1ヶ月ぶりくらいに書きます。 ここ1ヶ月の作業内容 タイトルのとおりなのですが、 テーマがいきなりマニアックでとまどったり、 デスチェリー農場の続編はどうしたんだよおおおお! とか新作を楽しみにしている生命が宇宙のどこかにいるかもしれないので あらかじめ書いておくと、 ここ1ヶ月は日記ソフトを作ろうと python + pyside + sqlite の勉強をしていました。 勉強というか、ウィンドウ起動から初めて、 GUI をせっせと作ったり、ファイル保存と復元を作ったりしてます。 Copy & Paste や Redo/Undo など未実装の処理も多くあります。 今回は、タブ遷移とかクリックで選択されたウィジェットの、 背景色が変わるとか、 枠線が出るとか そんな設定を CSS で実現します。 PySide と CSS について PySide は前も Raspberry Pi 2 で使う mount コマンドの GUI ツールで使いました。 Python の GUI フレームワークです。 さすがに HSP ほど簡単にウィンドウを出すことはできませんが、 かなり楽だし、 GUI の種類や機能もかなり充実しています。 ある程度 GUI を作っていて、 こんな露骨なウィンドウだと受けが悪いんじゃないかな と思いました。 なんか今っぽいおしゃれなデザインにしたい。 そんな誘惑にかられて調べていると、 CSS でお手軽にデザインを変更 できることがわかりました。 QWidget 派生のオブジェクトを作る際に、 setStyleSheet(str_css)で css を読み込ませることで簡単に実現できます。 次の例では file.css というファイルに書いた css を QWidget 派生クラスのオブジェクトに読み込ませます。 # css の読み込み with open("file.css","r") as f:     self.setStyleSheet("".join(f.readlines())) いろいろな G