shadowjohn / UCL_LIU

利用python+pyhook開發的仿嘸蝦米,肥米輸入法
MIT License
84 stars 17 forks source link

UI 可否鎖定位置 #24

Closed devenhala closed 2 years ago

devenhala commented 2 years ago

Hi ,

常常重開機後,UI 位置會亂跑,不知是否有固定的參數可以設置?謝謝。

image

shadowjohn commented 2 years ago

devenhala 您好,

這個畫面是 肥米被工作列檔住嗎,低於工作列?

UI 移動後放開,就會記錄最後一次操作的位置,但如果你是移超螢幕外,他會自動修正回大概三列工作管理員的高,右邊則是約 20px? 您的畫面是因為使用超過 2 列高的工作管理員列才檔住嗎? 還是畫面有作什麼字體、百分比設定加大之類? 在 uclliu.ini 裡有個「X、Y」就是指啟動後,UI 停放的位置,每次拖移,這個值就會馬上更新儲存覆蓋掉 如果您是因為工作列會設超過三列,下一版我再將 UI 位置的高,加上工作列的高度( 如果我能抓的到這個值的話)

devenhala commented 2 years ago

這個畫面是 肥米被工作列檔住嗎,低於工作列? >> 是的

UI 移動後放開,就會記錄最後一次操作的位置,但如果你是移超螢幕外,他會自動修正回大概三列工作管理員的高,右邊則是約 30px? 您的畫面是因為使用超過 2 列高的工作管理員列才檔住嗎? >> 我的環境是2列高沒錯 還是畫面有作什麼字體、百分比設定加大之類?

image image

這是在2列高我關閉後開啟 ini 裡的數值,或是可以在工具列的上層也是種方式。 y = 970 x = 1643

另有時候切換雙螢幕時,也會跑到第2螢幕去,這也是困擾的地方。

shadowjohn commented 2 years ago

https://user-images.githubusercontent.com/1788472/183698670-857c584c-28c6-4c8b-a5ae-f97d8f65e511.mp4

1.46 先修正會被工具列檔到的問題~ 我手邊沒有多螢幕,晚點有借到再試試

補充:用 python 取得 taskbar height 參考: https://stackoverflow.com/questions/4357258/how-to-get-the-height-of-windows-taskbar-using-python-pyqt-win32/51602236#51602236

from win32api import GetMonitorInfo, MonitorFromPoint

monitor_info = GetMonitorInfo(MonitorFromPoint((0,0))) monitor_area = monitor_info.get("Monitor") work_area = monitor_info.get("Work") print("The taskbar height is {}.".format(monitor_area[3]-work_area[3]))

這段似乎寫的不錯,直接用了~

shadowjohn commented 2 years ago

Hi devenhala,

肥米在處理自動化螢幕位置時,會先看「肥米的視窗」距離哪個螢幕的中心點最近來決定目前操作是落在哪個螢幕 我在想是不是因為您多螢幕操作時,加上可能玩遊戲或其他軟體時會因為當前螢幕變動解晰度,所以導致中心點位置誤判~ 所以造成之後還原解晰度時,位置跑版

如果是這樣我得考慮要把當前在第幾個螢幕也紀錄到 uclliu.ini 裡面 只是手邊目前沒有多螢幕,這個變動可能稍微大了點,等我借到第二個螢幕再試看看~~~

目前 1.46 先修正不會沉到工作列以下的問題

devenhala commented 2 years ago

Hi @shadowjohn ,

不好意思,現在才上來回留言, 今天做了測試,的確可以解決被工具列檔住的問題,實在太感謝了。

shadowjohn commented 2 years ago

太好了~ 沒您的提醒我也沒發現會檔到 祝使用愉快

shadowjohn commented 2 years ago

目前這樣行嗎? 要結案嘍?

devenhala commented 2 years ago

目前使用上沒有什麼大問題,謝謝您。