0 web オープンのランチャをまた作る
web オープンのランチャをまた作る URLlauncher
191028
-
キーワードが直接アドレスの一部になってるサイトのページ
http://**//=hoge
みたいなのを開くときのために、クリップ監視ソフトを自作してそこからクロームを起動するようにしてある
サイトの種類を自動判別するためにキーワード以外の文字列も含めてコピーして使う仕様だった
でも最近、キーワードのみでサイトを開きたいケースが増えてきた -
scieditor2 には文字列選択してクロームに投げる機能を実装してある
サイトのurlをテキストに書いておいて、hogeの部分にキーワードをコピペしてクロームに投げることで何とかしてたんだが、専用のソフトを作りたくなってきた -
与えるのはキーワードだけで、どのサイトを開くかはボタンなどで選択することになる
・常駐のクリップアプリからクリップワードを引数にして呼ぶ
・ボタンの仕組みをどうするか??追加削除が自由なものにしたい
・スクリプト中にボタン名とアドレスをセットで書いてリスト化、ボタン名は動的に設定
・ボタンは全て一つの関数にコネクトして、その関数でボタンの文字列を取得して分岐させる
import sys,subprocess
from PyQt5.QtWidgets import QApplication,QWidget ,QMainWindow
import untitled
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ui=untitled.Ui_MainWindow()
self.ui.setupUi(self)
args = sys.argv
if len(args) > 1 :
self.ui.lineEdit.setText(args[1])
buttons = [ self.ui.pushButton , self.ui.pushButton_2 , self.ui.pushButton_3 ,self.ui.pushButton_4,
self.ui.pushButton_5,self.ui.pushButton_6 , self.ui.pushButton_7 ,self.ui.pushButton_8,
self.ui.pushButton_9,self.ui.pushButton_10,self.ui.pushButton_11,self.ui.pushButton_12]
self.blist = [
( 'Google' , r'https://www.google.com/search?q={target}' ) , #
( 'hoge' , r'https://hoge/{target}/' ) , #
]
self.chrome = r'<fullpath>'
for i , l in enumerate( self.blist ) :
buttons[i].setText( l[0] )
buttons[i].clicked.connect( self.launchchrome )
def launchchrome( self ) :
title = self.sender().text()
i = 0
for i , l in enumerate( self.blist ) :
if title == l[0] :
break
target = self.ui.lineEdit.text()
url = self.blist[i][1].replace( '{target}' , target )
subprocess.Popen( ( self.chrome , url ) )
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())
191029
URLlauncher 位置を保存する
- 位置を変えれないと不便なので
Qtのデフォルトのクラスを使ってみた
from QtCore import QSettings
def closeEvent (self,e) :
settings = QSettings("OsamuApp", "URLlauncer")
settings.setValue("geometry", self.saveGeometry())
def init(self) :# コード追加
try:
settings = QSettings("OsamuApp", "URLlauncer")
self.restoreGeometry( settings.value( "geometry" ) )
except :
self.setWindowTitle('fail--load setting')
- winではレジストリを使う
CURRENT_USER\Software の下にエントリが作成されてた
レジストリを汚されるのが嫌で今まで使ってこなかったが、わざわざ設定ファイルを作らなくて良いので簡単で便利ではあります
linuxに移ってもこのコードのままで設定保存してくれるようなので良いかもしれない - 保存は単純で良いが読込は初回起動時のことを常に考えなければならないのがやや面倒
ざっくりとtryでくくったがこれでいいのかな
ifでエラー回避するよりはtryを使うのが推奨らしいけどなあ
191103
- ずっと放置していたがやはり不便なので「Bye」を実装
191122
- 毎日使ってます(・∀・)ノ
最下行を機能ボタンにして「コピー」「編集」「終了」を割り当てた
└──>その他もろもろの開発
コメント(0)