大分追加したので全編取り替えます。
PyGUIヒント集 10/24/2024
# CPU性能比較
https://pcrecommend.com/cpu/
# Python本家のホームページ ecookbook
*ChatGPT login tak@, opex 8/5/2024
# Pythonのinstall youtube 説明
★★# 二つのプログラムの違いを調べる
https://difff.jp/
# PySimpleGUIのinstall
pip install PySimpleGUI
PIL-->Pillowとしてinstallする
#部品の基本動作の詳細解説 wedgetと言う
https://qiita.com/sunameri22/items/da002d628d7a28cd6e97
https://one-iv.com/programming/python/pythonspysimplegui
# RGBカラーをスライドバーで表示させる
https://www.lab-nemoto.jp/www/leaflet_edu/else/ColorMaker.html
# windowの色合い
sg.theme('Kayak')
#「window.finalize()」の意味:
ウィンドウが完全に初期化され、ウィンドウ内の要素(ウィジェット)が即座に使用可能になります。
# ボタンの動的作成(layoutへ作成する)
[sg.Button(name) for name in url_link.keys() ],
layout = [[sg.Text('test', text_color='Blue', background_color='White', font=('Arial',20))]]
# ボタン位置・色を決める # 左、中央、右への配置はsg.Push()が便利
[sg.Button('Button', button_color=('blue','red'))]
# sg.InputTextにフォーカスをセットする
window['-INPUT-'].Widget.bind('<Enter>', lambda e: window.TKroot.focus_force())
# ウィンドウのテーマ、sg.theme('LightBrown2'), sg.theme('NeutralBlue'),sg.theme('Kayak'),
# データファイルのパス
data_file = os.path.join("text_holder", "100_poems.txt") ---> text_holder/100_poems.txt
# 最新バージョンにアップグレードする
pip install --upgrade PySimpleGUI
# from PIL import Image, ImageTkの場合は親元のライブラリーをpipでinstallすること
pip install pillow とすること
# Pythonのpathを調べる
C:\Users\xxxx\AppData\Local\Programs\Python\Python311
# pipでどんなライブラリーがinstallされているか調べる
C:\Users\xxxx> pip list
# listの[[]]を外す方法(辞書の要素のみ取り出す方法)
・text_list = [['DEYUW AHDJI']]
text = text_list[0][0].strip() #[0][0]のこと
print(text)=DEYUW AHDJI
# 辞書[]から要素を取り出す
・if event == '-file-':
sg.popup(f"選んだfileは、{values['-file-'][0]} ですね。")
selected_file = values['-file-'][0]
print(selected_file)
# 文字列の分割
s_blank = 'one two three\nfour\tfive' #\nは段落、\tはtabで分割
print(s_blank) # one two three # four five
print(s_blank.split()) # ['one', 'two', 'three', 'four', 'five']
print(type(s_blank.split()))
# 英文文字列をすべて大文字、小文字にする
string.ascii_uppercase ---> 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.ascii_lowercase ---> 'abcdefghijklmnopqrstuvwxyz'
# 日本語文字列をすべて子文字にする
import jaconv
text = "アイウエオ12345ABC"
converted_text = jaconv.z2h(text, kana=True, digit=True, ascii=True)
print(converted_text) --->出力: アイウエオ12345ABC
# ひらがなをカタカナにする
import jaconv
text = "こんにちは"
converted_text = jaconv.hira2kata(text)
print(converted_text) ---># 出力: コンニチハ
# 文字のサイズ、色を決める
layout = [[sg.Text('test', text_color='Blue', background_color='White', font=('Arial',20))]]
# 文字設定
layout = [
[ sg.Text('ここに表示させたい文字を入力', font=('Times New Roman',12,"bold"),text_color=("#ffffff"))]]
# string.capitalize(文字列) # 各単語の先頭を大文字にする
# string.lower(文字列) # すべて小文字にする
# string.upper(文字列) # すべて大文字にする
# string.join(リスト, セパレータ) # リストを join する
# string.strip(文字列) # 先頭と末尾の空白を削除する
# string.replace(文字列, 変更したい文字, 変更後の文字) # 置換する
# 文章の文字をアプリ上で追加する
formatter = string.Formatter()
f.format('{0}は口に{1}', '良薬', '苦し') ---> '良薬は口に苦し'
# 複数ボタンを動的配置する
button_texts = ["ボタン1", "ボタン2", "ボタン3"]
layout = [ [sg.Button(button_texts[0]), sg.Button(button_texts[1]),
sg.Button(button_texts[2])]]
[sg.Button(button_texts[0]), sg.Button(button_texts[1]), sg.Button(button_texts[2])]
# popupを数秒後に消す
・sg.popup_auto_close("5秒後に自動的に閉じるポップアップです", title="ポップアップ", auto_close_duration=5)
# popup位置を動かせるようにする
if popup_window:
popup_event, popup_values = popup_window.read(timeout=100)
# EXEファイルを作る, 写真などは別holderにして、exeに添付のこと
pyinstaller PySimpleGUI(ストップウオッチ).py --onefile –noconsole
# EXEファイルを作る, 写真などは別holderにして、exeに添付のこと
pyinstaller PySimpleGUI(ストップウオッチ).py --onefile –noconsole
# EXEファイルを作る, subアプリも一緒にEXE化する fileはすべてdesktopに置いてある。
C:\Users\n1tk>cd desktop
C:\Users\n1tk\Desktop>pyinstaller --onefile --windowed Morse7.py (Japanese7.py, English7.pyも一緒にexe化される) 10/27/2024
# mp3録音bitを変更する変更(128kbit-->64kbit)
https://www.mp3smaller.com/jp/
# with open()でfileを読み込む
①with open("All_208.txt", "r") as f: #,encoding="utf-8") as f:
list = f.readlines()
word_list = []
for i in list:
words = i.split('\t') #tab区分file、文字列中の空白、カンマ、ピリオドなどは混入OK
word_list.append(words)
②with open("All_208.txt", "r") as f:
word_list = [line.split('\t') for line in f]
# line(txtファイルの)分割(sep)方法
text_file = line.rstrip("\n").rsplit("\t") #rstrip("\n")は段落を取り除く,
rsplit("\t")はtabで分割する。 tabの代わりにspaceでも句読点でもOK
# MenuBarの作り方
layout=[ [sg.MenuBar([['ファイル',['新規ファイル','ファイルを開く','ユーザー設定',
['設定','拡張機能'],'閉じる']]])] ]
layout= [ [sg.MenuBar([['使い方',
['「開始/次へ」で上の句に対応する下の句が下に四個表示されます。',
'正しいと思ったボタンをクリックすると回答が表示されます。',' ','戻る']]]
# パーツを左・中・右に寄せで配置する
layout = [
[frame_left, frame_right],
[frame_bottom],
[sg.Push(), sg.Text('Tak ver x', text_color='LightBlue')], # 右寄せ
[sg.Push(), sg.Text('Right-aligned')], # 右寄せ, 背景色なし
[sg.Push(), sg.Button('Center-aligned'), sg.Push()], # 中央寄せ, 背景色あり
[sg.Text('Left-aligned'), sg.Push()]] # 左寄せ
--------------------------
# 主なライブラリーの説明
import numpy
import pyaudio
import time
import threading
import random
import pygame
import sys
Copilot:
numpy: 数値計算やデータ処理に特化したライブラリです。
多次元配列や行列演算、乱数生成などの機能を提供しています。
pyaudio: 音声処理に関連するライブラリです。
録音や再生、音声のストリーミングなどを行う際に使用されます。
time: Pythonの標準ライブラリで、時間に関連する機能を提供します。
スリープやタイムスタンプの取得などに利用されます。
threading: スレッドを扱うためのライブラリです。
並行処理を実現するために使用されます。
random: 乱数生成に関する機能を提供します。
ランダムな値を必要とする場合に活用されます。
pygame: ゲーム開発やマルチメディアアプリケーションの作成に適したライブラリです。
グラフィックス、音声、入力処理などをサポートします。
sys: Pythonのシステム関連の機能を提供するライブラリです。
コマンドライン引数の取得やプログラムの終了などに使用されます。
-----------------------------
# 現在のwindowの位置情報を取得する
x, y = window.current_location()
print(x, y)
-------------------------------
# sliderのlayout
layout = [
[sg.Slider(range=(0, 100), default_value=50, orientation='h', size=(20, 20), key='slider')]]
-------------------------------
# ウインドウ位置
win_location = (1000, 300)
window = sg.Window('サンプル', layout=layout, location=win_location)
*windowのタイトルバーを表示しないが、windowを動かせるにする
windowのlayoutで次を設定 --> no_titlebar=True, grab_anywhere=True, finalize=True
-------------------------------
# Pythonアプリを強制的にcloseする方法 10/19/2024
タスクマネージャーが簡易モードで表示されている場合は、左下にある「詳細」をクリック。
サブプロセスを探す:「プロセス」タブで、問題のサブウィンドウ(例えば「python.exe」など)のプロセスを探します。
-------------------------------
# 速度変更による音質の変化をなくす方法 # モールス信号練習機_ver_4.2.py 9/25/2024 完成品
速度変更による音質の変化をなくす方法
速度(WPM)を変更すると、音質や音量に影響を与えないようにするには、以下の方法を考えます。
音の周波数やサンプルレートを固定する
音質は、主に音の周波数やサンプルレートによって決まります。速度を変更しても、
れらの値を変えなければ音質が変化することはありません。
音量を固定する
音量が変わってしまう場合は、再生する音の振幅(音量)を一定に保つことで、
速度変更時の音量変化を防ぎます。
速度に応じた適切なタイミングの調整
DOT_DURATION、
DASH_DURATION、
SYMBOL_SPACE_DURATION、
LETTER_SPACE_DURATION、
WORD_SPACE_DURATION
以上の各変数を速度に応じて適切に設定し、時間的な調整のみ行います。
# クリックノイズ対策
クリックノイズは、モールス信号のサウンド生成時に波形の急激な変化(音の開始や終了時)に
よって発生することが多いです。
これを緩和するには、音の立ち上がりや立ち下がりを滑らかにするエンベロープ(フェードイン・
フェードアウト)を適用するのが効果的です。
以下の対策を試してみてください:
フェードイン・フェードアウトの適用: 各音の開始と終了部分にフェードイン・フェードアウトを適用して、
音量の変化を滑らかにします。
サンプル間のギャップを短くする: ノイズの原因となるサンプル間の無音部分を短縮します。
このコードのポイント:
fade_in_out_duration: フェードの長さをサンプル数で設定(ここでは 0.01 秒に相当)。
これを変更することで、フェードの強さを調整できます。
フェードインとフェードアウトの適用: 最初と最後の一部のサンプルに、線形に音量を変化させる配列を
乗算することで、急激な音の変化を和らげます。
フェードの調整:
クリックノイズがまだ気になる場合は、fade_in_out_duration を長くしてみてください
(例: int(sample_rate * 0.02) など)。
フェードが強すぎて音が不自然になる場合は、fade_in_out_duration を短く調整してください。
この改善によって、クリックノイズが軽減され、特に高い速度でのモールス符号再生時にも耳障りな音が減るはずです。
-------------------------------
Tak:win32とか0x08000000のの意味は?
# Windows の場合、CREATE_NO_WINDOW フラグを設定
if sys.platform == 'win32':
CREATE_NO_WINDOW = 0x08000000
ChatGPT:
win32 と 0x08000000 は、それぞれ以下のような意味を持ちます。
1. win32:sys.platform == 'win32' は、Pythonで使用される標準的な方法で、現在のプラットフォームがWindowsであるかどうかを確認するためのものです。
win32 は、Windowsオペレーティングシステムの32ビットおよび64ビットバージョンの総称として使用されます。
ここでの win32 は、Windowsのプラットフォーム全般を指しています(64ビット版Windowsでもこの名前が使われます)。
このコードは、スクリプトがWindows環境で実行されているかどうかを確認し、環境に応じた処理を行うために使われています。
2. 0x08000000(CREATE_NO_WINDOW)
0x08000000 は、WindowsのAPIで使用されるフラグの一つで、16進数で表現されています。この値は、CREATE_NO_WINDOW
というWindowsのプロセス作成フラグを表します。
CREATE_NO_WINDOW は、サブプロセスを作成する際に、コンソールウィンドウを表示しないようにするオプションです。
これを使うと、バックグラウンドでプロセスを実行でき、通常のコマンドプロンプトウィンドウが表示されなくなります。
例えば、subprocess.Popen() を使って別のPythonスクリプトを実行するとき、CREATE_NO_WINDOW を使うと、
そのスクリプトが独自のコマンドプロンプトウィンドウを開かず、バックグラウンドで静かに実行されます。
まとめると:win32: スクリプトがWindows環境で実行されているかどうかを確認するためのもの。
0x08000000 (CREATE_NO_WINDOW): Windows上でプロセスを実行する際に、コンソールウィンドウを表示せずにバックグラウンドで動作させるためのフラグ。
このフラグは、例えばGUIアプリケーションで、ユーザーが余計なコンソールウィンドウを見ないようにするために使われます。
-------------------------------
C:\Users\n1tk>pip list 1029/2024現在次のライブラリーがinstallされております。
Package Version
------------------------- --------------
altgraph 0.17.4
annotated-types 0.7.0
anyio 4.6.0
argon2-cffi 23.1.0
argon2-cffi-bindings 21.2.0
arrow 1.3.0
asttokens 2.4.1
async-lru 2.0.4
attrs 24.2.0
babel 2.16.0
beautifulsoup4 4.12.3
binaryornot 0.4.4
bleach 6.1.0
certifi 2024.8.30
cffi 1.17.1
chardet 5.2.0
charset-normalizer 3.3.2
click 8.1.7
colorama 0.4.6
comm 0.2.2
comtypes 1.4.7
contourpy 1.3.0
cookiecutter 2.6.0
cycler 0.12.1
debugpy 1.8.7
decorator 5.1.1
defusedxml 0.7.1
executing 2.1.0
fastapi 0.115.0
fastjsonschema 2.20.0
flet 0.24.1
flet-core 0.24.1
flet-runtime 0.24.1
fonttools 4.54.0
fqdn 1.5.1
gTTS 2.5.3
h11 0.14.0
httpcore 1.0.5
httptools 0.6.1
httpx 0.27.2
idna 3.10
ipykernel 6.29.5
ipython 8.29.0
isoduration 20.11.0
jaconv 0.4.0
jedi 0.19.1
Jinja2 3.1.4
json5 0.9.25
jsonpointer 3.0.0
jsonschema 4.23.0
jsonschema-specifications 2024.10.1
jupyter_client 8.6.3
jupyter_core 5.7.2
jupyter-events 0.10.0
jupyter-lsp 2.2.5
jupyter_server 2.14.2
jupyter_server_terminals 0.5.3
jupyterlab 4.2.5
jupyterlab_pygments 0.3.0
jupyterlab_server 2.27.3
kiwisolver 1.4.7
markdown-it-py 3.0.0
MarkupSafe 2.1.5
matplotlib 3.9.2
matplotlib-inline 0.1.7
mdurl 0.1.2
mistune 3.0.2
nbclient 0.10.0
nbconvert 7.16.4
nbformat 5.10.4
nest-asyncio 1.6.0
notebook_shim 0.2.4
numpy 2.1.1
oauthlib 3.2.2
otsuvalidator 2.0.1
overrides 7.7.0
packaging 23.2
pandocfilters 1.5.1
parso 0.8.4
pefile 2024.8.26
pillow 10.4.0
pip 24.3.1
platformdirs 4.3.6
plum-dispatch 1.7.4
prometheus_client 0.21.0
prompt_toolkit 3.0.48
psutil 6.1.0
pure_eval 0.2.3
pyasn1 0.6.0
PyAudio 0.2.14
pycparser 2.22
pydantic 2.9.2
pydantic_core 2.23.4
pygame 2.6.0
Pygments 2.18.0
pyinstaller 6.10.0
pyinstaller-hooks-contrib 2024.8
pyparsing 3.1.4
pypiwin32 223
pypng 0.20220715.0
PySimpleGUI 4.70.1
python-dateutil 2.9.0.post0
python-dotenv 1.0.1
python-json-logger 2.0.7
python-slugify 8.0.4
pyttsx3 2.97
pywin32 306
pywin32-ctypes 0.2.3
pywinpty 2.0.14
PyYAML 6.0.2
pyzmq 26.2.0
qrcode 7.4.2
referencing 0.35.1
repath 0.9.0
requests 2.32.3
rfc3339-validator 0.1.4
rfc3986-validator 0.1.1
rich 13.8.1
rpds-py 0.20.0
rsa 4.9
Send2Trash 1.8.3
setuptools 75.1.0
six 1.16.0
sniffio 1.3.1
soupsieve 2.6
Spire.Doc 12.7.1
stack-data 0.6.3
starlette 0.38.6
terminado 0.18.1
text-unidecode 1.3
tinycss2 1.4.0
tornado 6.4.1
traitlets 5.14.3
types-python-dateutil 2.9.0.20240906
typing_extensions 4.12.2
uri-template 1.3.0
urllib3 2.2.3
uvicorn 0.30.6
watchdog 4.0.2
watchfiles 0.24.0
wcwidth 0.2.13
webcolors 24.8.0
webencodings 0.5.1
websocket-client 1.8.0
websockets 13.1
C:\Users\n1tk>