[Python][PySide] フレーム無しのウィンドウを作成する

QMainWindowQWidgetをデフォルトのままで画面を作成すると、タイトルバーなどが自動的で表示されますが、 そのタイトルバーや枠などを非表示にする方法です。

環境

  • Python 3.3.3
  • PySide 1.2.1

コード

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

import sys
from PySide import QtCore, QtGui

class MainWindow(QtGui.QMainWindow):

	def __init__(self, parent=None):
		# コンストラクタの引数として flags を渡すことで指定できる
		super(MainWindow, self).__init__(parent, flags=QtCore.Qt.FramelessWindowHint)
		# 又は setWindowFlags メソッドで指定する
		# self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
		self.resize(800, 600)

		# ----------------------------------------------------
		# 閉じるボタンもなくなるので、自前で閉じれるように処理を追加しておく
		# ----------------------------------------------------
		# ツールバー作成
		self.toolbar = QtGui.QToolBar()
		# アクション作成
		exit_action = QtGui.QAction('閉じる', self)
		# ショートカットを設定
		exit_action.setShortcut('Ctrl+Q')
		# 閉じるのアクションが発火したときはアプリを終了するように
		exit_action.triggered.connect(QtGui.qApp.quit)
		# ツールバーにアクションを追加
		self.toolbar.addAction(exit_action)
		# ツールバーをセット
		self.addToolBar(self.toolbar)

		# テキストエリア
		textarea = QtGui.QPlainTextEdit()
		self.setCentralWidget(textarea)


if __name__ == '__main__':
	app = QtGui.QApplication(sys.argv)
	main_window = MainWindow()
	main_window.show()
	sys.exit(app.exec_())

コンストラクタの引数か、setWindowFlagsメソッドの引数にQt.FramelessWindowHintをセットするだけです。

実行例

参考

Trackbacks & Pingbacks

  • None

Comments

  • No Comment
Name
Mail(任意) 公開されません
Web Site(任意)
Comment

日本語が含まれない投稿は無視されますのでご注意ください