2017-04-30

python3,英文を読み上げる簡単プログラム

OS : Linux Mint 18 xfce

python3 で英単語を読み上げる簡単プログラム
━━━━━━━━━━━━━━━━━━━━━━

python3-espeak を インストールする。


from espeak import espeak

espeak.synth("Hello World")

実行すると、「へぇ」だけの音声。音声が途中でとぎれてしまう。
原因は、「ハローワールド」を音声で処理する前にプログラムが終了してしまうため。


そこで、プログラム終了を timeライブラリを使い、延長する。


from espeak import espeak
import time

espeak.synth("Hello World")
time.sleep(1.0)   # 1秒程度プログラム終了を遅らせる

「ハローワールド」と最後まで読み上げた。
ただし、音質は悪い。

2017-04-29

python3,tkinter,キーコードを出力またはキー認識,フレーム

python3,tkinter

フレームを表示、フォーカスする。
押されたキー認識コードやキー名を出力する。

import tkinter as tk

class Frame(tk.Frame):
 """フレーム設定"""
 
 def __init__(self, master=None):
	tk.Frame.__init__(self, master)
	"""  初期化 """
  
	self.master.geometry('300x200')
	self.master.bind('< KeyPress  >', self.key)

	def key(self, event):
	print ("key code", repr(event.char))

if __name__ == '__main__':
	root = Frame()
	root.mainloop() 

押されたキーのコードやキー名が表示される

< 表示例 >
key code 'A'     # A キー (a + Shift)
key code 'd'     # d キー
key code '¥r'      # リターン キー
key code ''       # シフト キー
key code ''       # コントロールキー
key code ' '                  # スペース キー (半角)
key code '¥u3000'    # スペース キー(全角)
key code '¥t'      # タブ キー


print ("key code", repr(event.char)) の event.char を event にすると下記の形式で出力される。
< 表示例 >
key code <tkinter.Event object at 0xb6fd6bcc>
key code <tkinter.Event object at 0xb6fd6bec>


キーやマウスのイベント(キーやマウスが操作された時に処理を実行するプログラムの動作)には以下のようなものがある。

< イベント例 >
書式 : '< Key  >'
Key, KeyPress  [ キーが押された ]
KeyRelease   [ キーが離された ]

Button, ButtonPress  [ マウスのボタンが押された ]
ButtonRelease  [ マウスのボタンが離された ]
Motion  [ マウスの移動 ]
Enter  [ マウスカーソルがウィンドウの中に入った ]
Leave  [ マウスカーソルがウィンドウから出た ]


2017-04-22

linux,mint,xfce,メニューから、起動しないアプリアイコンを削除できない

OS : Linux Mint 18 xfce

メニューからアプリを非表示にしたいが、できない。
通常メニューでのアプリの表示・非表示は「アプリケーションの編集」で設定する。
しかし、できないことがある。別な方法で非表示にする方法はないか?
非表示にできないアプリケーションはpyhtonで作成し、コマンドで登録した。
━━━━━━━━━━━━━━━━━━━━━━
【 解決方法 】
アプリケーション設定ファイルを直接削除する。

削除するのは赤枠内の2つのアプリメニュー。 起動しようとしてもエラーが出力される。



「menulibre-新しいランチャー.desktop」、「menulibre-新しいランチャー1.desktop」の2つのファイルを
/home/ユーザーID/.local/share/applications/ フォルダーから削除する。
ファイルをテキストエディタで開くと、メニューの内容を確認できる。


削除直後、2つのアプリケーションメニューのアイコンが表示されない。




2017-04-17

python,PyQt,Qt Designerでアプリ作成する方法

pyhtonで使われるGUI(グラフィカル ユーザー インターフェイス)には、Tkinterがある。
他に、wxpython、QtPy、kivyがある。

QtPy4 を使って GUI アプリの作成例。

言語 : pyhton3
GUI作成ソフト : Qt Designer
OS : Linux Mint 18

1. インストール

Qt Designer (ソフトウェアの管理)
pyqt4 ( $ sudo apt install python3-pyqt4 )
pyqt4 tool ( $ sudo apt install pyqt4-dev-tools )



2. Qt Designer 起動


Qt Designer起動画面
Qt Designer起動画面

3. (新しい)フォーオム選択


「Dialog without Buttons」 => 「作成」 クリック

Qt Designer フォーム選択
Qt Designer フォーム選択

4. フォームに必要なパーツを配置


アイコン「ウィジェット」ボタンをクリックする => パーツを配置する



以下のパーツをドラック&ドロップする。
「Line Edit」(1行のテキスト入力欄)
「Push Button」×2 (テキスト入力欄クリア・ボタン、フォームクローズ・ボタン)

テキスト入力欄配置
テキスト入力欄配置

ボタン配置
ボタン配置

5. 配置したパーツに機能を指定する


アイコン「シグナル/スロットを編集」ボタンをクリック => パーツに機能を指定する

パーツに機能を指定
パーツに機能を指定

パーツに機能を指定する方法

(1) ボタンをクリックするとテキスト入力欄が空になる

   1) マウスのポインタをボタン上に置き、ドラッグしながらテキスト入力欄へ移動する。

Qt Designer パーツに機能を指定する方法1
パーツに機能を指定する方法1-1

   2) 押した「ボタン」に何をしたら(左側)、「テキスト欄」がどうなるか(右側)を指定する。

      pushButton....項目から clicked() を選択
      lineEdit....項目から clear() を選択

Qt Designer パーツに機能を指定する方法2
パーツに機能を指定する方法1-2

   3) 「OK」ボタンをクリックすると、下図のように表示が変わる。


Qt Designer パーツに機能を指定する方法3
パーツに機能を指定する方法1-3


(2) ボタンをクリックするとフォームが閉じる(終了する)


   1) マウスのポインタをボタン上に置き、ドラッグしながら下方へ移動する。

Qt Designer パーツに機能を指定する方法4
パーツに機能を指定する方法2-1

   2) チェックを入れた後に左側項目を選択し、右側項目を選択する

      「QWidget...表示する」にチェックを入れる
      pushButton...項目から clicked() を選択
      Dialog.....項目から close() を選択
      以上のように順に操作することがここでは重要




   3) 「OK」ボタンをクリックすると、次のように表示が変わる。

Qt Designer パーツに機能を指定する方法5
パーツに機能を指定する方法2-2

   4) ボタンをダブルクリックし、表示ボタン名を変更する

     ( ”PushButton” から、それぞれ ”clear” ”close” とした )
     アイコンで「ウィジェットを編集」ボタンをクリックしてからボタン名を変更する。


6. 保存し、Qt Designer を終了




7. pyhton コードの書き出し

作成したフォームをpyhtonで書き出する。 
  本来は、フォーム => コードを表示でするのだが、コマンドで行う。

  保存したフォームのファイル名 : dw03.ui
  pyhtonコードの書き出しファイル名 : dw03.py

  コードの書き出しコマンド
  $ pyuic4 dw03.ui -o dw03.py

Qt Designer 書き出しコード
Qt Designer 書き出しコード
※ コードの書き出しをする場合、変換するファイル ( xxxxx.ui )があるディレクトリ内でする。

  dw03.py に書きだされた python コード内容

python コード内容


8. フォームを呼び出す python プログラムを作成


プログラム名 : 03.py

フォームを呼び出す python プログラム


9. 実行する


エディタ Geany で読み込み、実行 (F5キー)

Qt Designer 実行画面
Qt Designer 実行画面


Qt Designer で作成するだけで、 "Clear" ボタンでテキスト入力欄が 空に、 "Close" ボタンで フォームを閉じる、が機能した。 
Qt Designer はプログラムを組まずにボタンなどの機能をマウスだけで作成できた。

ただし、ターミナルから
$ python3 03.py
と入力しても、PyQt4 を認識しないエラーで起動しなかった。



2017-04-13

python,pygameでできたこと

ライブラリ python3-pygame でできたこと。

  • tkinter 風のウィンドウ表示。
  • ウィンドウ上に線、丸、四角、複雑な図や画像を描く。
  • 作成した複数のgif画像を交差しながら移動させる。
  • キーボードを使って図や画像を動かす。
  • wavファイルの音を鳴らす。
  • グラフを描く。