字体菜单 PyQt5 文本编辑器

Posted

技术标签:

【中文标题】字体菜单 PyQt5 文本编辑器【英文标题】:Fonts Menu PyQt5 Text Editor 【发布时间】:2017-09-27 23:37:38 【问题描述】:

问题:

我正在尝试找到一种将字体样式添加到由我的 PyQt5 文本编辑器程序的用户编写的文本的方法。我不想手动将每种字体编码到某种菜单中,我想知道用户是否有一种内置方式可以像这样为他们的文本选择字体样式(记事本字体选择器):

我的代码目前如下所示:

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_())

【问题讨论】:

【参考方案1】:

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)

截图:

【讨论】:

以上是关于字体菜单 PyQt5 文本编辑器的主要内容,如果未能解决你的问题,请参考以下文章

用VC++实现一个简单文本编辑器

用vc++ 实现一个简单文本编辑器 MFC编写

如何在 Eclipse 中为所有文本编辑器更改字体大小?

如何将PDF中的黑色字体改成红色

如何在pyqt5 Python中的行编辑中添加背景文本

颜色和字体的 Eclipse 快捷键 -> 基本 -> 文本字体