📅  最后修改于: 2023-12-03 15:03:59.097000             🧑  作者: Mango
在 PyQt5 里面,QSpinBox 是一个用于选择数字的小部件,它可以允许用户通过点击上下箭头或手动输入来改变数值。但是,在某些情况下,我们需要显示一些自定义文本而不是数字,例如:将此小部件用于选择语言。在这种情况下,我们需要知道如何获取 QSpinBox 中选定项目的翻译版本。这篇文章将向你展示如何在 PyQt5 中获取文本的翻译版本。
from PyQt5.QtWidgets import QLabel, QSpinBox, QApplication
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)
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 类将字符串翻译为所选语言。