Pergunta

Portanto, se eu entrar no qtdesigner e construir uma interface do usuário, ela será salva como um arquivo .ui. Como posso fazer isso como um arquivo python ou usá -lo no Python?

Foi útil?

Solução

Outra maneira de usar .ui em seu código é:

from PyQt4 import QtCore, QtGui, uic
class MyWidget(QtGui.QWidget)
    ...
    #somewhere in constructor:
    uic.loadUi('MyWidget.ui', self)

Ambas as abordagens são boas. Não se esqueça de que, se você usar arquivos de recursos QT (extremamente úteis) para ícones e assim por diante, também deve compilá -lo:

pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc

Observe, quando uic A interface de compila, adiciona 'Import Images_rc' no final do arquivo .py, para que você deve compilar recursos no arquivo com esse nome ou renomeá -lo no código gerado.

Outras dicas

Combinando Resposta de Max e Postagem da lista de discussão de Shriramana Sharma, Eu construí um pequeno exemplo de trabalho para carregar um mywindow.ui arquivo contendo a QMainWindow (Então, basta escolher criar uma janela principal no QT Designer's File-New diálogo).

Este é o código que o carrega:

import sys
from PyQt4 import QtGui, uic

class MyWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        uic.loadUi('mywindow.ui', self)
        self.show()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = MyWindow()
    sys.exit(app.exec_())

Você precisa gerar um arquivo python a partir do seu arquivo de interface do usuário com a ferramenta pyuic (sites-packages pyqt4 bin)

pyuic form1.ui > form1.py

com pyqt4

pyuic4.bat form1.ui > form1.py

Então você pode importar o Form1 para o seu script.

Achei este artigo muito útil.

http://talk.maemo.org/archive/index.php/t-43663.html

Descreverei brevemente as ações para criar e alterar o arquivo .ui para o arquivo .py, tirado desse artigo.

  1. Inicie o Designer QT no seu menu Iniciar.
  2. Da janela "Novo formulário", crie "Janela principal"
  3. De "Widgets de exibição" em direção à parte inferior do seu "menu da caixa de widget" no lado esquerdo
    Adicione um "widget de etiqueta". (Clique em arrastar e soltar)
  4. Clique duas vezes no widget de etiqueta recém -adicionada para alterar seu nome para "Hello World"
  5. Nesse ponto, você pode usar o Control + R Hotkey para ver como ela ficará.
  6. Adicione botões ou texto ou outros widgets por arrastar e soltar, se desejar.
  7. Agora salve seu formulário .. arquivo-> salvar as-> "hello world.ui" (o controle + s também será exibido
    a opção "salvar como") mantenha nota do diretório em que você salvou seu "Hello World" .ui
    Arquivo. (Eu salvei o meu em (c :) por conveniência)

O arquivo é criado e salvo, agora geraremos o código Python usando Pyuic!

  1. No menu Iniciar, abra uma janela de comando.
  2. Agora "CD" no diretório, onde você salvou seu "Hello World.ui" para mim, eu só tinha que "CD " e estava no meu prompt "C:>", onde meu "Hello World.ui" foi salvo.
  3. Quando você chega ao diretório em que seu arquivo é armazenado, digite o seguinte.
  4. pyuic4 -x helloworld.ui -o helloworld.py
  5. Parabéns!! Agora você tem um aplicativo Python Qt4 GUI !!
  6. Clique duas vezes no seu arquivo helloworld.py para executá -lo. (Eu uso o Pyscriptter e, após clique duas vezes
    Ele abre no Pyscript, então eu "execute" o arquivo a partir daí)

Espero que isso ajude alguém.

Você também pode usar uic no PYQT5 com o código a seguir.

from PyQt5 import uic, QtWidgets
import sys

class Ui(QtWidgets.QDialog):
    def __init__(self):
        super(Ui, self).__init__()
        uic.loadUi('SomeUi.ui', self)
        self.show()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Ui()
    sys.exit(app.exec_())

Você pode converter seus arquivos .ui em um arquivo python executável usando o comando abaixo.

pyuic4 -x form1.ui > form1.py

Agora você pode executar imediatamente o arquivo python como

python3(whatever version) form1.py

Você pode importar este arquivo e pode usá -lo.

A maneira mais limpa, na minha opinião, é exportar primeiro para .py como mencionado:

pyuic4 foo.ui > foo.py

E então use -o dentro do seu código (por exemplo main.py), Curti:

from foo import Ui_MyWindow


class MyWindow(QtGui.QDialog):
    def __init__(self):
        super(MyWindow, self).__init__()

        self.ui = Ui_MyWindow()
        self.ui.setupUi(self)

        # go on setting up your handlers like:
        # self.ui.okButton.clicked.connect(function_name)
        # etc...

def main():
    app = QtGui.QApplication(sys.argv)
    w = MyWindow()
    w.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

Dessa forma, dá a capacidade a outras pessoas que não usam o QT-Designner para ler o código e também mantém seu código de funcionalidade lá fora foo.py Isso pode ser substituído pelo designer. Você apenas faz referência ui Através dos MyWindow classe como visto acima.

Você pode compilar os arquivos da interface do usuário como este

pyuic4 -x helloworld.ui -o helloworld.py

Para compilar arquivos .ui a arquivos .py, eu fiz:

python pyuic.py form1.ui > form1.py

Att.

no PYQT5 para converter de um arquivo de interface do usuário em arquivo .py

pyuic5.exe youruifile.ui -o outputpyfile.py -x

Usando o Anaconda3 (setembro de 2018) e o QT Designer 5.9.5. No QT Designer, salve seu arquivo como interface do usuário. Abra o prompt da anaconda. Pesquise seu arquivo: CD C: .... (copie/cole o caminho de acesso do seu arquivo). Em seguida, escreva: pyuic5 -x helloworld.ui -o helloworld.py (helloworld = nome do seu arquivo). Digitar. LANÇA SPYDER. Abra seu arquivo .py.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top