忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[1]  [2]  [3]  [4
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

今回はPyQtで作ったGUIをRTコンポーネント化します。

ソースは長いのでPyQtのサンプルを置くページからPyQt-SAMPLE4.zipをダウンロードしてください。


PyQt-SAMPLE4.pywがサンプルプログラムです。


ボタン1を押したら[1, 0]、ボタン2を押したら[0,1]を出力するTimedLongSeqの型のアウトポートを持ってます。

作り方としては、
  1. RTCBuilderでTimedLongSeqのアウトポートを持つコンポーネントを作成
  2. from PyQt4 import QtCore, QtGui のようにPyQtをインポート
  3. サンプルの OUT=[0,0] のように関数の外に変数を作成
  4. OnButton1 のようにOUT[0]の値を変える関数をダイアログのクラスに定義
  5. self.button1.clicked.connect(self.OnButton1) のように button1 が押されたら OnButton1 を実行するようにする
  6. onExcute で self._d_button.data = OUT、self._buttonOut.write() のようにOUTを出力する
  7. OUTが変化したときのみ出力するようにする。
  8. main内で app = QtGui.QApplication(sys.argv)、dialog = Dialog()、sys.exit(dialog.exec_()) と記述
  9. mgr.runManager(True) ←ここ重要

まあ、こんなところ。

今回の開発環境は、OpenRTM-aist-Python-1.0.0-RC1です。

0.4.2では動作しません。



次回は本格的に使えそうなコンポーネントを作成します。

何作ろうかな。

とりあえず動作確認コンポーネントをつくります。

デザインは現在思考中。

多分次の更新は3日以上先になると思います。











にほんブログ村 IT技術ブログ Pythonへ
にほんブログ村の
Pythonのカテゴリ
現在参加人数1人・・・
人気ブログランキングへ 
PR

今回はオブジェクト化をやります。

ソースは以下の通りです。




from PyQt4 import QtCore, QtGui

#PyQtのインポートは必須

import sys

 

class Dialog(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Dialog, self).__init__(parent)
       
        self.mainLayout = QtGui.QVBoxLayout()
        self.button1 = QtGui.QPushButton("Button 1")
        self.mainLayout.addWidget(self.button1)
        self.button1.clicked.connect(self.SetButton)
        self.button2 = QtGui.QPushButton("Button 2")
        self.mainLayout.addWidget(self.button2)

        self.setLayout(self.mainLayout)
        self.setWindowTitle("SAMPLE3")

        self.setMinimumSize(200, 200)

        self.count = 3
       

    def SetButton(self):
        addbutton = QtGui.QPushButton("Button %d" % self.count)
        self.mainLayout.addWidget(addbutton)
        self.count += 1

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    dialog = Dialog()
    sys.exit(dialog.exec_())

 

ここからダウンロードできます。

今度はボタンが押しただけ分裂します。

オブジェクト化した方がわかりやすい・・・・と思うよ?


次回はPyQtで作ったGUIをRTコンポーネント化してみます。












にほんブログ村 IT技術ブログ Pythonへ
にほんブログ村の
Pythonのカテゴリ
現在参加人数1人・・・
人気ブログランキングへ 

では今回はボタンを押すとアクションを起こすようにします。

ボタンを押すと、ボタンが増えます。

以下サンプルです



from PyQt4 import QtCore, QtGui

#PyQtのインポートは必須

import sys


#これは必ず必須

app = QtGui.QApplication(sys.argv)

#ダイアログ作成

dialog = QtGui.QDialog()

#レイアウトの作成、QVは縦、QHは横に並べる

mainLayout = QtGui.QVBoxLayout()

#ボタン1の作成

button1 = QtGui.QPushButton("Button 1")
mainLayout.addWidget(button1)

 

#ボタン2の作成

button2 = QtGui.QPushButton("Button 2")
mainLayout.addWidget(button2)

 

button3 = QtGui.QPushButton("Button 3")

def SetButton():
    mainLayout.addWidget(button3)

button1.clicked.connect(SetButton)

 

#ダイアログにレイアウトを指定

dialog.setLayout(mainLayout)

#ダイアログの名前

dialog.setWindowTitle("SAMPLE2")

#ダイアログのサイズ

dialog.setMinimumSize(200, 200)

#これも必須

sys.exit(dialog.exec_())






ここ
からダウンロードできます。


追加したのは以下のコードです。



button3 = QtGui.QPushButton("Button 3")

def SetButton():
    mainLayout.addWidget(button3)

button1.clicked.connect(SetButton)


button3オブジェクトを作ります。

button1.clicked.connect(SetButton)でbotton1がクリックされるとSetButton関数が実行されます。

SetButton関数ではbutton3をレイアウトに追加してます。



次はオブジェクト化をやります。












にほんブログ村 IT技術ブログ Pythonへ
にほんブログ村の
Pythonのカテゴリ
現在参加人数1人・・・
人気ブログランキングへ 

にほんブログ村のPythonのカテゴリに登録したことだしPythonの記事を書こうかなっと。

今回はPyQtでPythonでGUIを作ってみたいと思います。

僕自身、PyQtを使うのは初めてですが何とかします。

必要なのは、今回の開発環境は

Python2.4

PyQt-Py2.4-gpl-4.7-1


PyQtはPyQt-Py2.4-gpl-4.7-1.exeを入手して実行するだけでインストールできます。


これで完了。


サンプルはC:\Python24\Lib\site-packages\PyQt4\examplesにあると思います。


簡単なサンプルを作成してみます。




ボタンが二つ並んだだけのサンプルです。

ソースは以下の通りです。



from PyQt4 import QtCore, QtGui

#PyQtのインポートは必須

import sys


#これは必ず必須

app = QtGui.QApplication(sys.argv)

#ダイアログ作成

dialog = QtGui.QDialog()

#レイアウトの作成、QVは縦、QHは横に並べる

mainLayout = QtGui.QVBoxLayout()

#ボタン1の作成

button1 = QtGui.QPushButton("Button 1")
mainLayout.addWidget(button1)

#ボタン2の作成

button2 = QtGui.QPushButton("Button 2")
mainLayout.addWidget(button2)

#ダイアログにレイアウトを指定

dialog.setLayout(mainLayout)

#ダイアログの名前

dialog.setWindowTitle("SAMPLE1")

#ダイアログのサイズ

dialog.setMinimumSize(200, 200)

#これも必須

sys.exit(dialog.exec_())




すごい簡単ですねぇ。

サンプルのダウンロードはここから。


今日はこのぐらいにしときます。

次回はボタンを押すとアクションを起こすようにします。

多分、少しの変更で済みますが。


 






にほんブログ村 IT技術ブログ Pythonへ
にほんブログ村の
Pythonのカテゴリ
現在参加人数1人・・・
人気ブログランキングへ 
現在対応している環境は、WindowsのVisual C++ 2008 EEです。

まずは以下のインストーラを入手してください。

python-2.6.4.exe
pygame-1.9.1.win32-py2.6.msi(機能を制限するならなくても可)
VPython-Win-Py2.6-5.14.exe
Boost-1.35.0_VC9.msi

あとはインストーラの指示に従ってください。

Visual C++ 2008 EEは、このページからインストールしてください。

Open Dynamics Engine-0.11.1.zipをこのページよりダウンロードして C:\ に解凍してください。


その後、Visual C++を立ち上げて、



ツール→オプションを選択して、


VC++ディレクトリ、インクルードファイルを選択して、

C:\ode-0.11.1\include
C:\Python26\include
C:\Program Files\Boost-1.35.0

あとはライブラリファイルに、

C:\ode-0.11.1\lib\DebugDoubleLib
C:\Program Files\Boost-1.35.0\lib
C:\Python26\libs

を入力してください。

C:\ode-0.11.1\lib\DebugDoubleLibは入力する前にC:\ode-0.11.1\build\vs2008のode.slnを開いて、いずれかのファイルをビルドしておく必要があります。

VC++ 2008用ファイルを作るには、コマンドプロンプトからC:\ode-0.11.1\buildに移動して、

premake4 --with-demos vs2008

としてください。




最後にHPからPyDrawStuff-0.0-CRをダウンロードして、PyDrawStuffのtest39.slnを開いてください。

あとは、Sample.cppを煮るなり焼くなり好きにしてください。

・・・・一つ重要なことを忘れておりました。

ジョイスティックを使うためのプログラムが必要です。

PyDrawStuffフォルダのJoysをC:\Python26\Lib\site-packagesにコピーしてください。

これで完了。

動作しなかった場合は、Pythonのバージョンを下げてみてください。

・・・・・まあ、そこまでしてやりたい人がいるかどうかですが。



最後にサンプル動画












ランキングに参加してます。押していただけると今まで経験がないくらい嬉しいです。
にほんブログ村 科学ブログ ロボットへ
にほんブログ村
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
フリーエリア
最新CM
[08/31 ysuga]
[08/31 Nobu]
[08/31 ysuga]
[12/11 Nobu]
[12/11 Kanamura]
最新TB
プロフィール
HN:
Nobu
年齢:
35
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]