mieki256's diary



2016/11/17(木) [n年前の日記]

#1 [python] PySideのツールバー関係を勉強中

QToolBar なるクラスを使うとツールバーが表示できるらしいので、その手のサンプルを探して眺めていたり。

_Menus and toolbars in PySide

どうやら、QAction を使って、メニューに表示する各項目を用意してから、メニューに追加、かつ、ツールバーにも追加していく模様。

QActionの書き方。 :

今までは以下のような書き方をしてたけど。
    eraser_action = QAction("Eraser", self)
    eraser_icon = QIcon(self.icons[2])
    eraser_action.setIcon(eraser_icon)
    eraser_action.setCheckable(True)
    eraser_action.setShortcut("E")
    eraser_action.setStatusTip("Eraser tool")
    eraser_action.triggered.connect(self.eraser_tool)

_Examples/menus.py at master - PySide/Examples で、こういう書き方もできるらしいと知った。
    line_action = QAction(QIcon(self.icons[3]), "Line", self,
                          checkable=True, shortcut="L",
                          statusTip="Line tool",
                          triggered=self.line_tool)

どっちが分かりやすいのかは、ちょっとよく分からない。

Qtが持っているアイコン画像を使う書き方。 :

自分で用意したアイコン画像を指定する際は以下のように書くけれど。
    new_action = QAction("&New", self)
    new_icon = QIcon(QPixmap("document-new.png"))
    new_action.setIcon(new_icon)

Qtが持ってるアイコン画像を使う場合は以下のように書けばいいらしい。
    new_action = QAction("&New", self)
    new_icon = self.style().standardIcon(QStyle.SP_FileIcon)
    new_action.setIcon(new_icon)

どういう種類のアイコン画像があるかは、以下のページが参考になった。

_Qt デフォルトで使用可能な組み込みアイコン QStyle::StandardPixmaps - unstable diary
_QStyle - PySide v1.0.7 documentation (PySide.QtGui.QStyle.StandardPixmap のあたりを参照)
_List of Qt Icons | Joe Kuan Defunct Code

qApp.setStyle(QStyleFactory.create('Cleanlooks')) 等を指定して全体の見た目を変えるとアイコンも変わるかもと思ったけれど。試してみたら一部のアイコンは変わったものの、大半は同じデザインのアイコンが表示された。

QToolBar上のアイコンサイズ。 :

QToolBar上のアイコンサイズを指定する方法は、以下が参考になった。

_How to change Icon size in QMenu?

    self.view_tb = QToolBar("View")
    self.view_tb.setIconSize(QSize(32, 32))
    self.addToolBar(self.view_tb)
QToolBarに対し、setIconSize() を使えば、表示したいアイコンサイズを指定することができる。

アクションのグループ化。 :

例えば、CGツールでよく見かける、ブラシツール、消しゴムツール、選択ツール等は、一つを選ぶと他の項目が非選択になる。要は、ラジオボタンっぽい感じだけど。

そういう感じのメニューやツールバーにしたい時は、QActionGroup を使う。
    # ツール群。checkableをTrueにしてることに注意
    pen_action = QAction("Pen", self)
    pen_action.setIcon(QIcon(self.icons[0]))
    pen_action.setCheckable(True)
    pen_action.setShortcut("P")
    pen_action.triggered.connect(self.pen_tool)

    eraser_action = QAction("Eraser", self)
    eraser_action.setIcon(QIcon(self.icons[2]))
    eraser_action.setCheckable(True)
    eraser_action.setShortcut("E")
    eraser_action.triggered.connect(self.eraser_tool)

    # ツール群はグループ化する。どれか一つだけが選ばれる状態になる。
    self.tools_grp = QActionGroup(self)
    self.tools_grp.addAction(pen_action)
    self.tools_grp.addAction(eraser_action)
    pen_action.setChecked(True)
該当する QAction に対し、setCheckable(True) を設定してから、QActionGroup に追加登録してやる。また、初期状態では、setChecked(True) を使って、どれか一つを選択状態にしておく。

メニューバーやツールバーへの登録は、いつもと同じように行えばいい。QActionGroup 自体をメニューバーやツールバーに追加登録する必要はない。

#2 [pc] Markdownを分かってないヤツが多過ぎる

Atomエディタの拡張の、 _markdown-toc てのが気になったのでインストールしてみたのだけど、toc = 目次が作れなくておかしいなと。

色々試していて気が付いた。この拡張は、行頭に「#」「##」を書くタイプの見出しにしか対応してないのだな。

この拡張の作者は、Markdownの売りが分かってないな…。よく見かける光景だけど、なんだかガックリ。

てなあたりから、どうでもいいことをもやもや考え始めたり。

Markdownの売り。 :

前にも書いた記憶があるけど…。Markdownの売りって、テキストファイルで眺めても視認性が高い、ってところで。

記述仕様/記述ルールの豊富さや、解析処理における厳格さで比較したら、他の記法のほうがはるかに充実していて。スペック(?)だけを見たらMarkdownを選ぶ理由なんて無い。

しかし他の記法は、ソースが呪文だらけ・謎記号だらけになってしまう。一般人お断りの文書ファイルになりがち。

そうはならないように「見た目」を重視してみたのが Markdown だし、その代わり記述仕様が今一つ充実してないのが Markdown。

「打ち込みやすさ」「できることの多さ」を重視したのが他の記法。「見栄え」「パッと見でわかるか」を意識したのが Markdown。そういう違いがあるわけで。

それを考えたら、二行で書くタイプの見出しには未対応で、行頭に「#」「##」を書くタイプの見出しにしか対応してないってのはNGだよなと。何のために Markdown を考え出したのか、そこからして分かってないからそうなっちゃうんだろう。いやまあ、行頭だけチェックする処理と、二行分をチェックする処理では、後者のほうが面倒だから対応したくないのは分かるのだけど、そこがいかにもプログラマー的なダメ思考というか。

個人的に、「Markdown とはなんぞや」が分かってるかどうかは、どっちの見出しの書き方をその人が選んでるかでおおよそ判断できそうな気がしていて。「#をつけると見出しになりますよ」しか説明しないヤツは、十中八九、分かってない。

というのも、「『#』が見出し」というルールを知らない人がソースを眺めてしまったら、その行が見出しとは分からないからで。つまり、「#」「##」の見出しを使いまくるというのは、謎記号を推奨するスタンスと言える。

だったら他の記法と何ら変わらないではないか。むしろ他の記法を選んだほうが良いではないか。他の記法なら謎記号を好きなだけ散りばめ放題。知らない人がソース(?)見て「ギャッ」となるファイルを書き放題。その代わり、Markdown よりも多種多様なコマンドを呼び出せて便利に使えるはず。謎記号カモーンなスタンスで書きたいなら、あえて Markdown なんぞ選ぶ必要は無いわけで。

というか、改めてGFM(GitHub Flavored Markdown)の仕様を眺めてみたら、謎記号がますます増えていて呆れたり。やっぱりプログラマーはダメだな。どんだけ謎記号が好きなんだ。いやまあ、打ち込む文字数が減るから、だろうけど。分かるけど。

そもそもLispのような括弧だらけの言語も平気で使いこなすのが優秀なプログラマーとされていたりするので、プログラマーという人種は謎記号に対する感覚が完全に麻痺しているのだろうなと。謎記号フェチ。それがプログラマー。だけどその割には、「Perlのソースは謎記号だらけ」とdisったりしてるし。Markdown すら謎記号だらけにしちゃう人種がソレを言うか…などと思ったり思わなかったり。

まあ、このあたり、「書きやすさ」と「読みやすさ」のどのへんでバランスをとるのか、という話でしかないのかしらん。

余談。 :

Visual Studio Code にも、 _Markdown Toc という拡張があるらしいのでインストールしてみたけど、こっちも「#」タイプにしか対応してなかった。どいつもこいつも分かってねえ。

以上、1 日分です。

過去ログ表示

Prev - 2016/11 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project