2021年10月3日日曜日
2021年9月26日日曜日
2021年9月23日木曜日
2021年9月20日月曜日
2021年9月13日月曜日
2021年9月4日土曜日
クリップボード(サーバー&クライアント)漢字
クリップボード(サーバー&クライアント)漢字
testCLIP.py
import win32clipboard as w32c
import time
def monitor(interval_sec, onchange):
pre_seq = None
def read():
try:
w32c.OpenClipboard()
return w32c.GetClipboardData()
except Exception as ex:
return ex
finally:
w32c.CloseClipboard()
while True:
seq = w32c.GetClipboardSequenceNumber()
if pre_seq != seq:
data = read()
pre_seq = seq
onchange(data)
time.sleep(interval_sec)
def main():
def onchange(data):
if isinstance(data, Exception):
print("Failed:", data)
else:
print("Clipboard:", data)
if data.find("\\u") != -1:
data2= data.encode('ascii').decode('unicode-escape')
import pyperclip
pyperclip.copy(data2)
monitor(1, onchange)
if __name__ == "__main__":
import pyperclip
main()
"""
s = 'あいうえお'
b = s.encode('unicode-escape').decode('ascii')
# //b = s.encode('ascii').decode('ascii')
pyperclip.copy( b )
print(b)
"""
# //text = '\\u30a8\\u30b9'
# //b = text.encode('ascii').decode('unicode-escape')
# //b = text.encode('ascii')
# //pyperclip.copy( b )
2021年8月21日土曜日
mysql ログイン うまくいかない mysqのアンインストールでエラーになってしまた!
バージョン
root@localhost:~# cat /etc/issue
Ubuntu 14.04.6 LTS \n \l
ルートのパスワードがわからなくなった場合などは
以下を起動させて、別ターミナルでmysql -u rootをする!
mysqld_safe --skip-grant-tables
2021年8月8日日曜日
npdb 変数表示
'''
最初だけ
有効かを
チェックする
'''
"""
流れを見てみる
"""
def dbg():
data = list( globals() )
val ={}
for key in data:
print("key=",key)
if key != "__builtins__":
data= globals()[key]
val[ key ] = data
return val
namae = input("名前を入力して下さい")
jyusyo= input("住所を入力して下さい")
"""
デバッグの変数内容
"""
print( dbg())
while True:
food= input("好きなたべものを入力して下さい")
if food == "":
break
print("名前は",namae)
print("住所は",jyusyo)
print("好きな食べ物は",food)
print("")
print("プログラム終了しました")
2021年8月1日日曜日
動画編集ソフトの自作(開発日誌)1
本日は、ウインドウを見つけて、ウインドウのタイトルを変更した。
opencvで ウインドウでタイトルを変更したかったが(漢字ファイル名の表示)
出来なかったので、回避策!
かなりの時間を費やした、人生の無駄な時間ですね!
でも執念深くやっていると思いつくものがあったですね
win32でウインドウ表示後に変更してしまえば良いじゃないか!
マウスイベントの処理をやりたかったので、 cv2.namedWindow( winName, cv2.WINDOW_NORMAL)
も必要だった。
タイトルに文字は、設定されて表示されているが、文字化けをする
が、
cv2.namedWindowの引数のウインドウ名とcv2.imshowの名前を文字化けのままでも、
マウスイベントは、うまく処理してくれる。
その後に、win32でウインドウのタイトルを変更してみた、
うまくできた、嬉しかった。
早く回避策を考えれば良かった(いやタイトルバーに漢字を使わなくてもそれほど問題は無いのだけど、性分で時間を費やしてしまった。(いかん、いかん、いけない!)
俯瞰の目
でも、何故できないか何故?
調べたら、
コード体系がUnicodeなく、GBK(中国)が使われているとか?
https://en.wikipedia.org/wiki/GBK_(character_encoding)
よくわからないけど。
日本語(Unicode )で渡すと、中国語の漢字が表示されるのかな、
疲れたなぁ!
中国漢字もタイトルバーには、うかく表示されない場合の対処がnet上にはあった、
日本語もこれでいけると期待していたがNGだった。
cv2.imshow(”タイトル”.encode("GBK").decode() )
Unicode(GBK)などエスケープされたバイト列に変換(エンコード)
してからの、
Unicodeなどエスケープされたバイト列を文字列に変換、デコードだけなのだから!
参考URL PythonでUnicodeエスケープされた文字列・バイト列を変換
ここまで,です!
2021/08/02 零時になってしまった、早く寝よう!
【例】
実際のファイル名
fn= C:/Users/kobay/MyTool/pad 拡張機能2
タイトルバーの漢字
良く見ると日本の漢字ではない
(中国の漢字ですね「繁体字化か簡体字は判定できないけど」)
opencvも中国には対応しているのかぁ~
class mosaic():
def __init__( sl, winName="" ):
import cv2
import sys,os,time
#ウィンドウの名前を設定
# ウインドウ名を指定しないとcallbackしないので注意!
# //cv2.namedWindow( winTitleName, cv2.WINDOW_AUTOSIZE)
sl.winName = winName
cv2.namedWindow( winName, cv2.WINDOW_NORMAL)
cv2.setMouseCallback( winName, sl.mouseCallback)
cv2.imshow( winName, img ) # ファイル名がタイトルバーに表示されます
import win32gui
import win32api
import ctypes
handle=0
def setWinTtl( ttl ):
global handle
handle = ctypes.windll.user32.FindWindowW("Main HighGUI class", None)
win32gui.SetWindowText(handle, ttl )
win32gui.SetForegroundWindow(handle)
print("handle,ttl", handle, ttl)
def actWin():
global handle
win32gui.SetForegroundWindow(handle)
iframe内のDOMを操るには?
WebPageで、iframe内を操作したい場合、
(JavaScript でiframe内のDOM要素の取得、操作方法)
ポイント
・iframeのID取得
・それで、iframe内のID取得
(getContentIDだったかな?!)
コマンドプロンプトの様なもの(ブラウザで実現)
netpdb(オンラインのパイソンデバッガ)で使う為に、
コマンドプロンプトの様なもの(ブラウザで実現)を作成した。
(入出力ができる)
ソースは、以下である。
2021年7月23日金曜日
Power Automate Desktop(Webページからデータを抽出する)で改行が?!
郵便番号の検索自動を作ってみた
デバッグの為に、毎回ブラウザを起動するのは疲れる
起動モードを、「実行中のインスタンスに接続する」に変更しました。
(何でアクションは、新しい???を起動するなんだ、???を起動するでいいじゃないですか?)
これで、デバッグしし易くなった。
アクションは、「Webページからデータを抽出する」なんですが、
青い人間の設計なのか(自分の若いときには、そうしたかな)、
Webヘルパーのウインドウが起動されるよ!
ここで、取得した表示位置でマウスを左クリックしてメニューを表示させて「要素の選択」
から「テキスト」を選んで取得したいものを選びました!
ここまでは、すべて順調でしたが。
改行コードが含まれていてうまく変数に入りません!
結論から!
アクションの「テキスト」ー>「テキストの分割」を選ぶとうまくいった
正規表現が使えるようにして、区切り記号を「\r\n」にすればOKだ!
※ここで注意したいのは、マイクロソフトの改行は(NewLine)
\r\nと言う事です。
勿論、「\n\r」じゃないですよ、最後に「\n」ですよ!
(自分の為に強調して書かせてもらいました、因みにコードは(\r\n、0x0D0A)です)
(UNIXの改行コードはLF)
(Macの改行コードはCR)ですね、
Webページから取り出しのほやほやは、これ
2021年7月18日日曜日
Pythonのリスト型のデータを削除する(delが便利)
指定位置の削除は、pop,delで可能
(0からスタートなので注意!)
*リスト変数名.pop(消したいindex番号)
lst.pop(1)
*すべてクリアは
lst.clear()
*delは便利そうです、すべてクリアは、すべての範囲指定すればできる
del lst[1] 一番目の要素を削除
del lst[:] すべてクリア(括弧内のコロンは、最初~最後の要素を表現します)
>>> lst = list( range(5) )
>>> lst
[0, 1, 2, 3, 4]
>>> lst.clear()
>>> lst
[]
>>>
>>>
>>> lst = list( range(5) )
>>> lst
[0, 1, 2, 3, 4]
>>> print( lst.pop(1) )
1
>>> lst
[0, 2, 3, 4]
>>>
>>>
>>> del lst[1]
>>> lst
[0, 3, 4]
>>>
>>> del lst[:]
>>> lst
[]
>>>
>>>
2021年7月8日木曜日
MySQLがハッキングされた!
悪いやつがいる。
公開 2021/04
更新 2021/07
そんなに前ではなかったのですね!
少しでも参考になれば、まだ文章は途中ですが…
MySQLのワードプレスの
テーブルが消されて、以下のような内容がてテーブルに書かれた!
要約は、9日以内にお金を払え、さもなければテーブルを売り飛ばす!
----------------------------------- + -------------- ----------------- + ------------------ +
| 1 |失われたデータベースを回復してリークを回避するには、http://hn4wg4o6s5nc7763.onionにアクセスし、一意のトークン779fa3e5c3957a62を入力し、必要な量のビットコインを支払って元に戻します。私たちが持っているデータベース:wordpressdb、sandbox、test_db。データベースがダウンロードされ、サーバーにバックアップされます。 9日以内に支払いがない場合は、データベースを落札者に販売するか、それ以外の方法で使用します。このサイトにアクセスするには、Torブラウザを使用していますhttps://www.torproject.org/projects/torbrowser.html | http://hn4wg4o6s5nc7763.onion | 779fa3e5c3957a62 |
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----- + --------------------- + ------------------ +
| 1 |失われたデータベースを回復してリークを回避するには、http://dbrestore.toにアクセスし、一意のトークンc4af6b9ed16e55e2を入力し、必要な量のビットコインを支払って元に戻します。私たちが持っているデータベース:npdb、wordpressdb、sandbox、testDB。データベースがダウンロードされ、サーバーにバックアップされます。 9日以内に支払いがない場合は、データベースを落札者に販売するか、それ以外の方法で使用します。 | http://dbrestore.to | c4af6b9ed16e55e2 |
+ ---- + -------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------
+ ---- + -------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------------------------------------------+-------------------------------+------------------+
| 1 | To recover your lost databases and avoid leaking it: visit http://hn4wg4o6s5nc7763.onion and enter your unique token 779fa3e5c3957a62 and pay the required amount of Bitcoin to get it back. Databases that we have: wordpressdb, sandbox, test_db. Your databases are downloaded and backed up on our servers. If we dont receive your payment in the next 9 Days, we will sell your database to the highest bidder or use them otherwise. To access this site you have use the tor browser https://www.torproject.org/projects/torbrowser.html | http://hn4wg4o6s5nc7763.onion | 779fa3e5c3957a62 |
-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+------------------+
| 1 | To recover your lost databases and avoid leaking it: visit http://dbrestore.to and enter your unique token c4af6b9ed16e55e2 and pay the required amount of Bitcoin to get it back. Databases that we have: npdb, wordpressdb, sandbox, testDB. Your databases are downloaded and backed up on our servers. If we dont receive your payment in the next 9 Days, we will sell your database to the highest bidder or use them otherwise. | http://dbrestore.to | c4af6b9ed16e55e2 |
+----+----------------------------------------------------------------------------------------------------------------------------
コマンド一覧
select user,host from mysql.user;
drop user ユーザー名;
show table status where name='WARNING'
Filmora残念
本アプリで編集が上手くいかない!!
やはり自作がいいのかな?
途中ですが、
特徴
音声
眠いので寝ます
import cv2
import sys,os,time
import pydub
import simpleaudio
class mySound:
def __init__( self, fn ):
self.sound0 = pydub.AudioSegment.from_file( fn + ".mp4" )
self.fn = fn
def play( self, start, end, speed=1 ):
self.sound = self.sound0[ start*1000: end*1000 ]
# //sound.export( fn + ".mp3" , format="mp3", bitrate="127k")
# //self.sound.export( fn + ".mp3" , format="mp3", bitrate="254k")
playObj = simpleaudio.play_buffer(
self.sound.raw_data,
num_channels = self.sound.channels,
bytes_per_sample= self.sound.sample_width,
# //sample_rate=int(sound.frame_rate*2)
sample_rate=int( self.sound.frame_rate*speed)
)
return playObj
def export( self, start, end ):
self.sound = self.sound0[ start*1000: end*1000 ]
self.sound.export( self.fn + ".mp3" , format="mp3", bitrate="254k")
def replay( self, tim ):
self.sound = self.sound0[ tim*1000:]
playObj = simpleaudio.play_buffer(
self.sound.raw_data,
num_channels =self.sound.channels,
bytes_per_sample=self.sound.sample_width,
# //sample_rate=int(sound.frame_rate*2)
sample_rate=int(self.sound.frame_rate)
)
return playObj
def dispInfo( img ):
dougaTm = frame_num * (1/fps)
mm = dougaTm /60
ss = dougaTm %60
ff = dougaTm %60
cv2.putText(img, "%02d:%02.02f" %( mm, ss ), (30,30), cv2.FONT_HERSHEY_COMPLEX, 1, (255,0,0), 2, 8)
cv2.putText(img, "f:%02d" %( frame_num), (30, 60), cv2.FONT_HERSHEY_COMPLEX, 1, (255,0,0), 2, 8)
cv2.putText(img, "sf:%02d" %( startFrame ), (30, 60+30), cv2.FONT_HERSHEY_COMPLEX, 1, (0,0,255), 2, 8)
cv2.putText(img, "ef:%02d" %( endFrame ), (30, 60+60), cv2.FONT_HERSHEY_COMPLEX, 1, (255,0,255), 2, 8)
def dispWin():
global playObj,snd,startSec, startTm
global img,frame_num
cap.set(cv2.CAP_PROP_POS_FRAMES, frame_num )
ret, img = cap.read()
frame_num = cap.get(cv2.CAP_PROP_POS_FRAMES)
print("frame_num", frame_num)
# //各情報の表示をおこなう
dispInfo( img )
cv2.imshow('Video', img )
startFrame = 0
endFrame = 0
playSW = False
recSW = False
def procPlay():
global playObj,snd,startSec, startTm
global img,frame_num
global startFrame,endFrame
global playSW, recSW, stopSW
key = ""
if endFrame <= frame_num:
playObj.stop()
stopSW = True
playSW = False
recSW = False
while True:
key = cv2.waitKey(0)
print("key",key)
if key & 0xFF == 49:
startFrame -= 5
print("startFrame=", startFrame )
dispWin()
if key & 0xFF == 50:
startFrame += 5
print("startFrame=", startFrame )
dispWin()
if key & 0xFF == 51:
endFrame -= 5
print("endFrame=", endFrame )
dispWin()
if key & 0xFF == 52:
endFrame += 5
print("endFrame=", endFrame )
dispWin()
if key & 0xFF == 27:
tim = ( (1/fps) * frame_num)
startSec = tim
startTm = time.time()
playObj = snd.replay( tim )
return key
if key & 0xFF == ord("p") or key & 0xFF == ord("w") :
if key & 0xFF == ord("w") :
recSW = True
else:
playSW = True
frame_num = startFrame
dispWin()
tim = ( (1/fps) * frame_num)
startSec = tim
startTm = time.time()
playObj = snd.replay( tim )
return key
return key
def inputKey( key ):
global playObj,snd,startSec, startTm
global img,frame_num
global startFrame,endFrame
global playSW, recSW, stopSW
stopSW = False
while True:
if key & 0xFF == ord(" "):
if stopSW:
tim = ( (1/fps) * frame_num)
startSec = tim
startTm = time.time()
playObj = snd.replay( tim )
return key
else:
playObj.stop()
stopSW = True
# //開始フレーム、終了フレームの設定
if key & 0xFF == ord("r"):
startFrame = frame_num
print("startFrame=", startFrame )
return key
if key & 0xFF == ord("s"):
endFrame = frame_num
print("endFrame=", endFrame )
return key
# //マークフレームの確認
if key & 0xFF == ord("p") or key & 0xFF == ord("w") :
playSW = True
playObj.stop()
stopSW = True
frame_num = startFrame
dispWin()
tim = ( (1/fps) * frame_num)
startSec = tim
startTm = time.time()
playObj = snd.replay( tim )
return key
if key & 0xFF == ord("b"):
playObj.stop()
stopSW = True
frame_num -= fps+1
dispWin()
if key & 0xFF == ord("f"):
playObj.stop()
stopSW = True
frame_num += fps-1
dispWin()
if key & 0xFF == 8:
playObj.stop()
stopSW = True
frame_num -= 2
dispWin()
if key & 0xFF == 13:
playObj.stop()
stopSW = True
# //frame_num += 2
dispWin()
# //再度、キー入力待ちをする
key = cv2.waitKey(0)
print("key===",key)
# //dispWin()
def wait( speed=1 ):
global playObj,snd,startSec, startTm
global img,frame_num
while True:
key = cv2.waitKey(1)
if key & 0xFF == ord("q"):
return key
sousaKey = [ord(" "), ord("b"), ord("f"),
ord("r"),
ord("s"),
ord("p"),
ord("w"),
8, 13 ]
if key in sousaKey:
key = inputKey( key )
return key
if playSW or recSW:
procPlay()
realTm = time.time() - startTm
# //print( "time.time()=", time.time() )
# //print( "realTm=", realTm )
tim = ( (1/fps) * frame_num / speed)
if startSec + realTm > tim:
return key
# //----------------------------------------------------------------
# //ここからスタート
# //----------------------------------------------------------------
fn = "man"
fn = "testCap"
startSec = 0
endSec = 200
#Video Source
cap = cv2.VideoCapture( fn + '.mp4') #自分のmp4のpathを入力
frame_num = cap.get(cv2.CAP_PROP_POS_FRAMES)
fps = cap.get(cv2.CAP_PROP_FPS)
# //出力ファイルの設定
fourcc = cv2.VideoWriter_fourcc( *'mp4v')
ret, img = cap.read()
h, w, channels = img.shape
rec = cv2.VideoWriter('douga.mp4', fourcc, fps, (w, h))
snd = mySound( fn )
playObj = snd.play( startSec, endSec )
startTm = time.time()
# //0秒は、0フレーム
# //1秒は、25フレーム
# //2秒は、50フレーム
pos =fps * startSec
cap.set(cv2.CAP_PROP_POS_FRAMES, pos )
# //----------------------------------------------------
# //メインループ
# //----------------------------------------------------
while True:
ret, img = cap.read()
frame_num = cap.get(cv2.CAP_PROP_POS_FRAMES)
# //終了秒数
tm = frame_num /fps
if tm >= endSec:
break
# //各情報の表示をおこなう
dispInfo( img )
cv2.imshow('Video', img )
if recSW:
img_out = img.copy()
rec.write(img_out)
print("rec!")
key = wait( )
if key & 0xFF == ord("q"):
snd.export( startFrame, endFrame )
break
# //フレームの移動(前に戻る)
if key & 0xFF == ord("b"):
frame_num -= 1
cap.set(cv2.CAP_PROP_POS_FRAMES, frame_num )
dispInfo( img )
rec.release()
# //playObj.stop()
sys.exit()
# //------------------------------------------------
# //ここでは、動画と音声の結合です
# //------------------------------------------------
import ffmpeg
def concat():
# //print("concat-1")
fn_in = "douga"
fn_in2= "man"
fn_out ="douga_out.mp4"
# //print("concat-2")
if os.path.isfile( fn_out ):
# //print("concat-3")
os.remove( fn_out )
# //print("concat-4")
instream1= ffmpeg.input( fn_in + ".mp4") # video
instream2= ffmpeg.input( fn_in2 + ".mp3") # sound
#コーデックと出力ファイル
stream = ffmpeg.output( instream1, instream2, fn_out, vcodec="copy", acodec="copy")
ffmpeg.run(stream, quiet=True)
concat()
sys.exit()
while True:
ret, img = cap.read()
img = cv2.resize(img, (frameWidth, frameHeight))
cv2.imshow('Video', img)
# //print('ret=', ret)
# qを押すと止まる。
if cv2.waitKey(50) & 0xFF == ord('q'):
break
2021年5月2日日曜日
自動化の為のパイソン超入門(原案)
***********************************************
自動化の為のパイソン超入門
プログラミングが未経験でも大丈夫です
***********************************************
$
---------------------------------------------------------------
プログラムは簡単です
---------------------------------------------------------------
自動化をやりたいけれど、
プログラミング未経験者に見てもらいたい動画です
プログラミングは奥が深いので、すべてを理解して
十分に使いこなすのは大変ですが、
自動化の為だけならば簡単に楽しくできます
$
---------------------------------------------------------------
自動化をする
プログラミング初心者でもOK
---------------------------------------------------------------
自動化には、いろいろなアプリがあります、
今回は、Python言語を利用します
プログラミングが初めてでも大丈夫ですよ!
fこの動画を見てパイソンもマスタしてくださいね
スクリプトを作成するとも言います。
スクリプトは、上から順番に命令を実行していくものです
$
---------------------------------------------------------------
プログラムとは、どんなものか?
---------------------------------------------------------------
プログラムとは、どのようなものでしょうか?
プログラミングするとは、どんなことでしょうか?
プログラミングとは、
メモ帳などで日記を書くようにして作成します
書く内容は、英語でも日本語でもなく
プログラミング言語で書きます
今回は、パイソンという言語で書きます
そして、コンピュータに読ませて実行させます
$
---------------------------------------------------------------
動画(スクリプトの流れ)
---------------------------------------------------------------
実際には、このような感じになります
1行がコンピュータにやらせる命令です
誰でも、簡単に作成できます
$
---------------------------------------------------------------
準備する
インストールする
---------------------------------------------------------------
パイソンでプログラミングするには、準備が必要です
fインストールをするのですね!
インストールは、別動画がありますので、
そちらを見てくださいね
注意したいのは、32、64ビットかを指定する
そして、パスです
$
---------------------------------------------------------------
関数を使う
変数に代入
ループさせて、待ち
---------------------------------------------------------------
今回の内容は、
関数を使う
変数、そして
ループさせて待たせるです
このような内容を理解すれば、自動化することができます
$
---------------------------------------------------------------
変数に代入
---------------------------------------------------------------
変数とは、一時的に数字や文字列を保存しておける
ものです
名前を付けることができます
f変数名といいます
$
---------------------------------------------------------------
変数を参照する
---------------------------------------------------------------
変数は、実行中は分かりません、
printを利用してみます
また、デバッガ等を使うしかありません
fネットのnpdを使うのもいいですね!
はい、URLを書いておきますね
fこれがプログラミングを難しくしているのですね!
はい、
fどのような場合に使いますか?
主に関数の引数やif文の条件です
$
---------------------------------------------------------------
動画
変数を参照する
---------------------------------------------------------------
では、メニューの座標位置を調べます
flocateOnScreenを使うのですね!
はい、返却されますので変数に代入します
そしてマウスポインタを移動させます
引数に返却された変数を渡せばOKです
fマウスポインタの移動は、moveToを使うのですね
$
---------------------------------------------------------------
動画
変数を参照する
---------------------------------------------------------------
$
---------------------------------------------------------------
自動化の為の関数
返却値=ある関数(引数を指定)
---------------------------------------------------------------
では、実際に関数を使って見ましょう
関数の使い方は、このような感じです
関数名を書いて、その関数に値を渡すことができます
$
---------------------------------------------------------------
実際の関数の使い方
moveTo(引数)
---------------------------------------------------------------
では、実際にみてましょう
moveToは、マウスポインターの位置を変更させるものです
引数には、x,yの座標を与えます
座標の基準点は、左上になります
fそこが、xが0,yが0なのですね
左に行けば、x値が増えて、下に行けば、y値が増えます
返却値はありません
$
---------------------------------------------------------------
実際の関数の使い方
座標と大きさ=locateOnScreen(引数)
---------------------------------------------------------------
今度は、返却値のある、locateOnScreenという関数です
引数には、画像を渡します
関数を呼び出すと、現在の画面上の引数画像にマッチする
位置情報などを返します
$
---------------------------------------------------------------
動画
---------------------------------------------------------------
$
---------------------------------------------------------------
ループさせる(無限ループ)
while true:
print("ループ中")
---------------------------------------------------------------
ループさせるには、whileを使います
ループさせたい内容は、字下げします
$
---------------------------------------------------------------
ループさせる(無限ループ)
while true:
print("ループ中1")
print("ループ中2")
print("ループ中3")
print("ループ中4")
---------------------------------------------------------------
ループさせたい内容が複数行ある場合は、
同様に字下げします
字下げされていない、printは、whileから抜けた
場合に表示されます
この場合は、無限にwhileを行います
f無限ループになっているのですね!
これは、プログラムとしておかしいですね
fバグですね!
$
---------------------------------------------------------------
ループから抜ける
while true:
print("ループ中1")
if 条件:
break
print("ループから抜けました")
---------------------------------------------------------------
ループから抜けたい場合は、
if文を使います
書き方は、if 条件式、コロン、字下げをして
breakと書きます
$
---------------------------------------------------------------
ifの条件式の書き方
例
変数名 == 10
変数名 == "15"
変数名 != 10
変数名 != "15"
変数名 >= 10
---------------------------------------------------------------
条件式の書き方は、例題のようになります
イコールが2つで、同じ場合
ビックリ、イコールで違う、
$
---------------------------------------------------------------
ループさせる(回数)
ix = 0
while true:
print( "ix=", ix)
if ix==3:
Break
---------------------------------------------------------------
指定回数ループする方法です。
変数を使い、変数を+1してループ回数をアップさせていきます
if文でループ終了の回数を指定すれば、whileから抜けられます
$
---------------------------------------------------------------
ループさせる(条件)
while true:
xy = locateOnScreen( img )
print( "xy=", xy)
if xy != None:
Break
---------------------------------------------------------------
今度は、画像の位置が取得できたら
ループ終了してみます
locateonscreenと言う関数で、返却値がNoneでなくなるまで
ループします
ループから抜けたら、取得座標値を表示してみます