📜  PyQt5 QSpinBox – 获取文本的翻译版本(1)

📅  最后修改于: 2023-12-03 15:03:59.097000             🧑  作者: Mango

PyQt5 QSpinBox – 获取文本的翻译版本

在 PyQt5 里面,QSpinBox 是一个用于选择数字的小部件,它可以允许用户通过点击上下箭头或手动输入来改变数值。但是,在某些情况下,我们需要显示一些自定义文本而不是数字,例如:将此小部件用于选择语言。在这种情况下,我们需要知道如何获取 QSpinBox 中选定项目的翻译版本。这篇文章将向你展示如何在 PyQt5 中获取文本的翻译版本。

步骤
  1. 首先,导入 QLabel、QSpinBox、QApplication、QTranslator 和 QLocale 类。
from PyQt5.QtWidgets import QLabel, QSpinBox, QApplication
from PyQt5.QtCore import QTranslator, QLocale
  1. 接下来,我们需要用 PyQt5 创建应用程序,并将其设置为翻译 QSpinBox 中选定项目。
app = QApplication([])
trans = QTranslator()
trans.load('zh_CN.qm')  # 使用你的 QM 文件的名称
app.installTranslator(trans)
  1. 创建 QSpinBox 并将其添加到 QLabel 中。
spinbox = QSpinBox()
label = QLabel()
label.setBuddy(spinbox)
  1. 现在,当用户选择新项目时,我们需要更新 QLabel 的文本。为此,我们将连接 QSpinBox 的 valueChanged 信号以更新 QLabel 的文本。valueChanged 信号将提供新值,我们将其转换为字符串,然后使用 tr 方法将其翻译为用户选择的语言版本。
def set_label_text(new_value):
    label.setText(translator.tr(str(new_value)))

spinbox.valueChanged.connect(set_label_text)
  1. 最后,我们需要将 QSpinBox 和 QLabel 添加到窗口中。
from PyQt5.QtWidgets import QHBoxLayout, QWidget

layout = QHBoxLayout()
layout.addWidget(spinbox)
layout.addWidget(label)

widget = QWidget()
widget.setLayout(layout)
widget.show()

app.exec_()

现在,当用户选择新项目时,我们更新了 QLabel 的文本,该文本显示 QSpinBox 中选定项的翻译版本。

完整代码片段
from PyQt5.QtWidgets import QLabel, QSpinBox, QApplication, QHBoxLayout, QWidget
from PyQt5.QtCore import QTranslator, QLocale

app = QApplication([])

trans = QTranslator()
trans.load('zh_CN.qm')  # 使用你的 QM 文件的名称
app.installTranslator(trans)

spinbox = QSpinBox()
label = QLabel()
label.setBuddy(spinbox)

def set_label_text(new_value):
    label.setText(translator.tr(str(new_value)))

spinbox.valueChanged.connect(set_label_text)

layout = QHBoxLayout()
layout.addWidget(spinbox)
layout.addWidget(label)

widget = QWidget()
widget.setLayout(layout)
widget.show()

app.exec_()
总结

在本文中,我们了解了如何在 PyQt5 中获取文本的翻译版本。在实现这个小小的任务时,我们学习了如何创建 QSpinBox 和 QLabel,如何连接 valueChanged 信号以更新 QLabel 的文本,以及如何使用 QTranslator 和 QLocale 类将字符串翻译为所选语言。