【pyqt】フレームレスなやつ

海外のツールのデモをみたりすると凄くかっこよかったりします。

僕みたいにツールを作ってお仕事をさせてもらっていると「かっこよくなきゃ

モチベーションがでない!」などという意見を頂くことも。

 

デザインなんて、、、って言いたいところですが自分だって

同じようなアプリだったらUIがかっこいい方を選ぶし、

もしかしたら少し機能が劣ってもかっこいい方を選んでしまうかも

とか思うので否定のしようがありません。

デザインがいいと最初の掴みがいいんです。

 

幸い僕が普段使っているqtはデザイン周りの調整もしやすいので、最近は

「さぁかっこいいのを作るぞ!」と意気込んで作るも、そこにはデザインの

センスみたいなものが必要なわけで、思ったようにはいきません(笑)

 

でもユーザーに気に入ってもらって使ってもらうことはすなわち僕自身の

存在意義になるので、デザインの良し悪しが少しでも影響するならばそれは

前向きに取り掛かろうと思いまして、よりフラットにすべく

windowsのフレーム部分をなくすコードを書いてみました。

※コード貼り付けるときのうまいやり方がわかりません。

 もしかしたらインデントの修正が必要かもです。

※frameless.uiはなんでもOKです。ぺけぽんのcloseボタンくらいはあった方が

 いいです。

 

#-*-coding:utf-8-*-

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.uic import *
import sys
import os
class Frameless(QMainWindow):
    def __init__(self, parent=None):
        super(Frameless, self).__init__(parent)

    def set_ui(self, ):
        self.ui = loadUi("%s/frameless.ui" % os.path.dirname(__file__), self)
        self.ui.setWindowFlags(Qt.Dialog | Qt.FramelessWindowHint | Qt.CustomizeWindowHint)

    def mouseReleaseEvent(self, pos):
        self.mouse_clicked_pos_x = pos.x()
        self.mouse_clicked_pos_y = pos.y()

    def mousePressEvent(self, pos):
        self.mouse_clicked_pos_x = pos.x()
        self.mouse_clicked_pos_y = pos.y()

    def mouseMoveEvent(self, pos):
        self.move(pos.globalX()-self.mouse_clicked_pos_x, pos.globalY()-self.mouse_clicked_pos_y)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = Frameless()
    form.set_ui()
    form.ui.show()
    app.exec_()

 

f:id:hat27:20150823025708p:plain

※こちらせっかくのフレームレスを台無しにする立体的なボタンを配置したもの。