2017-09-27 8 views
0

問題:フォントメニューPyQt5テキストエディタ

私は私のPyQt5テキストエディタプログラムのユーザーによって書かれたものをテキストにフォントスタイルを追加する方法を見つけようとしています。私は手動で何らかの種類のメニューに各フォントをコーディングしたくないのですが、ユーザーがこのようなフォントのフォントスタイル(メモ帳のフォントピッカー)を選択できるようにする方法があるのだろうかと思っています:

Notepad fonts

私のコードは、現在、次のようになります。

class App(QMainWindow): 
    def __init__(self): 
     super().__init__() 
     self.title = 'Text Editor' 
     self.left = 10 
     self.top = 10 
     self.width = 1080 
     self.height = 920 

     self.widget = QWidget(self) 
     self.lbl = QLabel(self) 

     self.text = QTextEdit(self.widget) 
     self.widget.setLayout(QVBoxLayout()) 
     self.widget.layout().addWidget(self.text) 
     self.setCentralWidget(self.widget) 
     self.initUI() 



    def initUI(self): 
     self.setWindowTitle(self.title) 
     self.setGeometry(self.left, self.top, self.width, self.height) 

     toolBar = self.menuBar() 
     fileMenu = toolBar.addMenu('File') 
     editMenu = toolBar.addMenu('Edit') 
     toolsMenu = toolBar.addMenu('Tools') 
     helpMenu = toolBar.addMenu('Help') 

     fontButton = QAction('Configure Editor', self) 
     fontButton.setShortcut('Ctrl+E') 
     fontButton.triggered.connect(lambda: self.font_set) 
     toolsMenu.addAction(fontButton) 

     self.show() 

    def font_set(self): 
     print("Display Fonts") 


if __name__ == '__main__': 
app = QApplication(sys.argv) 
ex = App() 
sys.exit(app.exec_()) 

答えて

2

QtはQFontDialogと呼ばれるウィジェットを持っており、それがこのような場合に最適です、次の部分で私は、その使用例を示します。

def font_set(self): 
    font, ok = QFontDialog.getFont(self.text.font(), self) 
    if ok: 
     #QApplication.setFont(font) 
     self.text.setFont(font) 
     print("Display Fonts", font) 

注:あなたは、次のステートメントを変更する必要があります。

fontButton.triggered.connect(lambda: self.font_set) 

へ:

fontButton.triggered.connect(self.font_set) 

スクリーンショット:

enter image description here