2016-10-14 33 views
1

Qt Designerを使用してフレームとタイトルバーをデザインする方法はありますか?PyQt5を使用してカスタムタイトルバーとウィンドウフレームを実装するにはどうすればよいですか?

もしそうなら、どうすれば既存のコードで動作させることができますか?ここで

は既存のコードです:いない場合は

import sys 

from PyQt5 import QtCore, uic 
from PyQt5.QtWidgets import QApplication, QDialog 


class Actions(QDialog): 
    def __init__(self, parent=None): 
     QDialog.__init__(self, parent) 

     self.ui = uic.loadUi("console_gui.ui") 
     self.ui.setWindowFlags(QtCore.Qt.FramelessWindowHint) 
     self.ui.show() 

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    window = Actions() 
    sys.exit(app.exec_()) 

、成功しFramelessWindowHintを使用したソースPyQt5プロジェクトを開くことがリンクしていますか?

PyQt5には、これに関する文書はありません。彼らはC++バージョンにリンクするだけです。

+0

PS:私は、リンクされた質問にPyQt5バージョンを追加しました。 – ekhumoro

答えて

0

QPushButtonsとQHBoxLayoutを使用できます。

class Actions(QDialog): 
    def __init__(self, parent=None): 
     QDialog.__init__(self, parent) 

     self.setWindowFlags(QtCore.Qt.FramelessWindowHint) 


     self.resize(500, 600) 

     # 
     self.otherFrame = QFrame(self) 

     # There are two Buttons and using them custom title bar. 
     # We could give them string or pictures. 
     self.oneButton = QPushButton('one') 
     self.twoButton = QPushButton('two') 

     # We must be give them some functions. 
     self.oneButton.clicked.connect(self.oneClicked) 
     self.twoButton.clicked.connect(self.twoClicked) 

     # And some layouts. 
     # This is a layout of horizontal. 
     # 
     self.layouts = QHBoxLayout() 
     # This is a layout of vertical. 
     self.layouts2 = QVBoxLayout() 

     self.layouts.addWidget(self.oneButton) 
     self.layouts.addWidget(self.twoButton) 
     self.layouts.addStretch(1) 

     self.layouts2.addLayout(self.layouts) 
     self.layouts2.addWidget(self.otherFrame) 


     self.setLayout(self.layouts2) 

     self.show() 

    def oneClicked(self): 
     print(1) 

    def twoClicked(self): 
     print(2) 



    def mousePressEvent(self, event): 

     if event.buttons() == Qt.LeftButton: 
      self.m_drag = True 
      self.m_DragPosition = event.globalPos()-self.pos() 
      event.accept() 

    def mouseMoveEvent(self, event): 
     try: 
      if event.buttons() and Qt.LeftButton: 
       self.move(event.globalPos()-self.m_DragPosition) 
       event.accept() 
     except AttributeError: 
      pass 

    def mouseReleaseEvent(self, event): 
     self.m_drag = False 

このようにします。

enter image description here

+0

それはマウスのドラッグイベントなどを解決するようではありませんが、非常にありがとうございます。 :) – daegontaven

+0

@Daegon Taven私はそれを編集しました。 – Cyrbuzz

関連する問題