Как я могу изменить названия меток qpushbutton, используя pyqt4 - PullRequest
0 голосов
/ 13 декабря 2018

Вот мой пример кода, я пытаюсь перевести весь мой файл на арабский язык, используя python.i, пробовал со словарем в pyqt4, когда я нажимаю на арабский язык, я хочу изменить имя всех кнопок и название метки вМой файл. Пожалуйста, кто-нибудь может помочь мне, как я могу решить эту программу, используя в PyQT4

Ниже приводится мой пример кода:

# -*- coding: utf-8 -*-
import sys
from pyface.qt import QtGui, QtCore

data = {'Arabic': {'Share': 'Aktie','Rename': 'Umbenennen','Back':'Zurück'}}
class Example(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Example, self).__init__(parent)
        self.sharebtn = QtGui.QPushButton("Share")
        self.renamebtn = QtGui.QPushButton("Rename")
        self.backbtn  = QtGui.QPushButton('Back')

        self.labelflag = QtGui.QLabel()
        pixmap = QtGui.QPixmap("./img/english.png")
        pixmap1 = pixmap.scaled(60, 60, QtCore.Qt.KeepAspectRatio, QtCore.Qt.FastTransformation)

        self.labelflag.setPixmap(pixmap1)
        self.labelflag.mousePressEvent = self.languageWidget
        self.lay1 = QtGui.QVBoxLayout()
        self.scrollArea = QtGui.QScrollArea()
        self.scrollArea.setBackgroundRole(QtGui.QPalette.Light)
        self.scrollArea.setWidgetResizable(True)
        self.mainLayout =QtGui. QGridLayout()
        self.btnSee  =QtGui. QPushButton('See_file')
        self.btnSee.clicked.connect(self.files)
        self.lay1 = QtGui.QVBoxLayout()
        self.lay1.addWidget(self.btnSee)
        self.lay1.addWidget(self.backbtn)
        self.lay1.addWidget(self.sharebtn)
        self.lay1.addWidget(self.labelflag)

        self.mainLayout.addWidget(self.scrollArea,0,1)
        self.mainLayout.addLayout(self.lay1,0,0)
        self.setCentralWidget(QtGui.QWidget(self))
        self.centralWidget().setLayout(self.mainLayout)
        self.setGeometry(100,100,800,500)
    def files(self):
        self.w = QtGui.QWidget()
        self.vbox = QtGui.QVBoxLayout(self.w)
        self.label = QtGui.QLabel()
        self.label.setText("helloworld")
        self.btnq = QtGui.QPushButton("click")
        self.vbox.addWidget(self.label)
        self.vbox.addWidget(self.btnq)
        self.scrollArea.setWidget(self.w)
        self.show()

    def languageWidget(self, event):

        self.lanwidget1 = QtGui.QDialog()
        self.langvbox = QtGui.QVBoxLayout(self.lanwidget1)

        self.eng_hbox = QtGui.QHBoxLayout()
        self.englabel = QtGui.QLabel()
        self.englabel.setText("English")
        self.englabel1 = QtGui.QLabel()

        self.engpixmap = QtGui.QPixmap("./img/english.png")
        self.englabel1.mousePressEvent = self.engicon
        self.eng_pixmap = self.engpixmap.scaled(60, 60, QtCore.Qt.KeepAspectRatio, QtCore.Qt.FastTransformation)
        self.englabel1.setPixmap(self.eng_pixmap)
        self.eng_hbox.addWidget(self.englabel1)
        self.eng_hbox.addWidget(self.englabel)


        self.arabic_hbox = QtGui.QHBoxLayout()

        self.ara_label = QtGui.QLabel()
        self.ara_label.setText("Arabic")
        self.arbiclabel = QtGui.QLabel()
        self.arabicpixmap = QtGui.QPixmap("./img/arabic.jpeg")
        self.arbiclabel.mousePressEvent = self.arabic_icon
        self.ara_pixmap = self.arabicpixmap.scaled(60, 60, QtCore.Qt.KeepAspectRatio, QtCore.Qt.FastTransformation)
        self.arbiclabel.setPixmap(self.ara_pixmap)
        self.arabic_hbox.addWidget(self.arbiclabel)
        self.arabic_hbox.addWidget(self.ara_label)


        self.german_hbox = QtGui.QHBoxLayout()
        self.ger_label = QtGui.QLabel()
        self.ger_label.setText("German")

        self.germanlabel = QtGui.QLabel()
        self.germanpixmap = QtGui.QPixmap("./img/german.png")
        self.german_pixmap = self.germanpixmap.scaled(60, 60, QtCore.Qt.KeepAspectRatio, QtCore.Qt.FastTransformation)
        self.germanlabel.setPixmap(self.german_pixmap)
        self.german_hbox.addWidget(self.germanlabel)
        self.germanlabel.mousePressEvent = self.german_icon
        self.german_hbox.addWidget(self.ger_label)

        self.langvbox.addLayout(self.eng_hbox)
        self.langvbox.addLayout(self.arabic_hbox)
        self.langvbox.addLayout(self.german_hbox)
        self.lanwidget1.setWindowFlags(QtCore.Qt.FramelessWindowHint)

        self.lanwidget1.exec_()
    def engicon(self,event):
        print "englishh"
        global langIndx
        self.lanwidget1.close()
        self.labelflag.setPixmap(self.eng_pixmap)
    def arabic_icon(self,event):
        print "arabiccc"
        global langIndx
        self.lanwidget1.close()
        self.labelflag.setPixmap(self.ara_pixmap)
        self.change("Arabic")

    def german_icon(self,event):
        print "germannn"
        global langIndx
        self.lanwidget1.close()
        self.labelflag.setPixmap(self.german_pixmap)
    def change(self,i):
        print i, "iiiiiiiiiiiiiilanguage"

        if i == "Arabic":
            if i in data.keys():
                share_con_value1 = data.get(i, {}).get('Share')
                self.sharebtn = QtGui.QPushButton("share_con_value1")

                ex = Example()
                ex.show()
               #here i want to get the label names of the button how can i change and replace the that particular word 

def main():
    print sys.argv
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 13 декабря 2018

Ваш код даже не пытается прочитать файл.

избавьтесь от всего, что QT может сейчас перенести на консоль, беспокойтесь о GUI позже.

Тогда для перевода,Это не простая задача.Вы не можете сделать перевод 1-1, потому что есть различия в том, как говорят на разных языках.Лучше всего было бы использовать перевод API, как googles API .

Итак, для шагов:

  1. избавиться от Qt и вернуться в консольное приложение
  2. открыть и прочитать содержимое файла
  3. взять содержимоеи вызовите googles api с текстом, прочитанным из файла
  4. , верните текст из google или распечатайте его на экране консоли или запишите его в файл
  5. потяните Qt обратно, чтобы создать графический интерфейс
...