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エスケープされた文字列・バイト列を変換

https://note.nkmk.me/python-unicode-escape/

でも、本当にはよくわからない。

ここまで,です!

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(オンラインのパイソンデバッガ)で使う為に、

コマンドプロンプトの様なもの(ブラウザで実現)を作成した。

(入出力ができる)

ソースは、以下である。