Python 其他语言的Qt键盘输入

Python 其他语言的Qt键盘输入,python,c++,qt,pyqt5,Python,C++,Qt,Pyqt5,在文字处理器中,当我将字体改为Preeti时,键入“asdfgh”将显示बकमानज". 我尝试将QPlainTextEdit的字体更改为Preeti,但它仍然键入“asdfgh” 如何在Qt中实现同样的效果 以下是我正在做的: @pyqtSlot() def select_font(self): font, ok = QFontDialog.getFont(self) if ok: ## the text in ui.text_edit is in unicod

在文字处理器中,当我将字体改为Preeti时,键入“asdfgh”将显示बकमानज". 我尝试将
QPlainTextEdit
的字体更改为
Preeti
,但它仍然键入“asdfgh”

如何在Qt中实现同样的效果

以下是我正在做的:

@pyqtSlot()
def select_font(self):
    font, ok = QFontDialog.getFont(self)
    if ok:
        ## the text in ui.text_edit is in unicode
        self.ui.text_edit.setFont(font)
显然,系统中存在字体。字体的显示也是正确的(从.txt文件加载时)。不起作用的是键入该字体。从键盘到所选字体的按键映射就是我所说的


< C++ >或Python中的帮助:语言不重要。

< P>在应用程序中不可能识别字体。检查是否安装了字体。还可以尝试将<代码> PrIET.TTF < /C>文件添加到资源中,并使用:

将其添加到应用程序中。
QFontDatabase::addApplicationFont(“:/fonts/preeti.ttf”);
我发现样式表比使用
setFont(QFont)
)设置字体更可靠。使用
textEdit->setStyleSheet(font-family:'Preeti');

编辑 在python中,可以按照以下方式从QFontDialog()设置样式表

@pyqtSlot()
def select_font(self):
    font, ok = QFontDialog.getFont(self)
    if ok:
        params = font.toString().split(",") # The string is :"Preeti,9,-1,5,50,0,0,0,0,0"
        self.ui.text_edit.setStyleSheet("font-family :%s;font-size:%spt;" % (params[0], params[1]))

应用程序中可能无法识别该字体。请检查是否已安装该字体。您还可以尝试将
preeti.ttf
文件添加到资源中,并使用以下方法将其添加到应用程序中:

QFontDatabase::addApplicationFont(“:/fonts/preeti.ttf”);
我发现样式表比使用
setFont(QFont)
)设置字体更可靠。使用
textEdit->setStyleSheet(font-family:'Preeti');

编辑 在python中,可以按照以下方式从QFontDialog()设置样式表

@pyqtSlot()
def select_font(self):
    font, ok = QFontDialog.getFont(self)
    if ok:
        params = font.toString().split(",") # The string is :"Preeti,9,-1,5,50,0,0,0,0,0"
        self.ui.text_edit.setStyleSheet("font-family :%s;font-size:%spt;" % (params[0], params[1]))

其他字体是否可用?Preeti是否适用于其他“标准”应用程序(如您的基本文本编辑器,无论是记事本、Gedit还是其他任何应用程序)。当您的文字处理器在Preeti字体中找不到
a
s
时,可能无法正确地使用拉丁字体,而只是从Preeti中选择了一些内容作为替代?其他字体是否有效?Preeti是否适用于其他“标准”应用程序(如您的基本文本编辑器,无论是记事本、Gedit还是其他应用程序)。也许您的文字处理器在Preeti字体中找不到
a
s
,而只是从Preeti字体中选择了一些东西作为替代品时,就不能正确地使用拉丁字体了?我已经对这个问题进行了编辑。问题不在于系统中是否存在字体。我只是自己测试了一下(使用
QLabel
)。为小部件设置
QFont
无效。相反,我唯一的选择是使用
setStyleSheet(“字体系列:Preeti;”)
.HTML标记也不起作用。你能在你的系统中测试一下并让我知道吗?如果它起作用,我可以更改答案。这里的事情看起来很复杂,现在字符显示正确。但是保存
文本编辑::明文()
不会从字体创建unicode映射。有没有办法将我键入的内容转换为unicode?我不希望您得到unicode文本,因为您只是在更改普通字母数字字符的字体。您可能需要为此编写映射器函数。我已对该问题进行了编辑。问题不存在系统中的字体。我自己刚刚测试过(使用
QLabel
)。为小部件设置
QFont
不起作用。相反,我唯一的选择是使用
setStyleSheet(“字体系列:Preeti;”)
.HTML标记也不起作用。你能在你的系统中测试一下并让我知道吗?如果它起作用,我可以更改答案。这里的事情看起来很复杂,现在字符显示正确。但是保存
文本编辑::明文()
不会从字体创建unicode映射。是否有方法将我键入的内容转换为unicode?我不希望您得到unicode文本,因为您只是在更改普通字母数字字符的字体。您可能需要为此编写映射器函数。