• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PySide6 - Using .ui files

0 głosów
104 wizyt
pytanie zadane 19 września 2021 w Python przez Hysek Obywatel (1,250 p.)

Witam, 


Napotkałem się na następujący problem przy kompilacji:

from ui_mainwindow import Ui_MainWindow
ValueError: source code string cannot contain null bytes

 

main.py:

import sys
from PySide6.QtWidgets import QApplication, QMainWindow
from ui_mainwindow import Ui_MainWindow


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

if __name__ == "__main__":
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    sys.exit(app.exec())

 

wygenerowany przez pyside6-uic mainwindow.ui > ui_mainwindow.py

# -*- coding: utf-8 -*-

################################################################################
## Form generated from reading UI file 'mainwindow.ui'
##
## Created by: Qt User Interface Compiler version 6.1.3
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide6.QtCore import *  # type: ignore
from PySide6.QtGui import *  # type: ignore
from PySide6.QtWidgets import *  # type: ignore


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(480, 640)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.verticalLayout = QVBoxLayout(self.centralwidget)
        self.verticalLayout.setObjectName(u"verticalLayout")
        self.pushButton = QPushButton(self.centralwidget)
        self.pushButton.setObjectName(u"pushButton")

        self.verticalLayout.addWidget(self.pushButton)

        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.pushButton.setText(QCoreApplication.translate("MainWindow", u"PushButton", None))
    # retranslateUi

 

Ktoś wie dlaczego pojawia mi się ten ValueError?? Nie mogę znaleźć nigdzie rozwiązania ani przyczyny . Bardzo proszę o pomoc 

Pozdrawiam

1 odpowiedź

+1 głos
odpowiedź 7 grudnia 2021 przez yara Nowicjusz (160 p.)

pliki generowane poleceniem  mają kodowanie UTF-16LE

Ja radzę sobie tak, że zmieniam kodowanie na UTF-8 (np. polecenie "Save with encoding..." w vscode lub użyj iconv w konsoli linuxowej).  

Problem pojawia się jak będziesz ponownie kompilował ten sam plik i użyjesz istniejącego pliku z kodowaniem utf-8. 

Wówczas procedura jest następująca:

  1. zmień  kodowanie pliku main_window.ui na utf-16le
    iconv -f UTF-8 -t UTF-16LE -o ui_mainwindow_utf16.py ui_mainwindow.py
    
  2. wykonaj 
    pyside6-uic mainwindow.ui > ui_mainwindow_utf16.py
  3. wróć do kodowania utf-8
    iconv -f UTF-16LE -t UTF-8 -o ui_mainwindow.py ui_mainwindow_utf16.py
    

Teraz możesz już importowac ui_mainwindow bez błędów.. 

Podobne pytania

0 głosów
1 odpowiedź 105 wizyt
pytanie zadane 15 grudnia 2020 w C i C++ przez Foszy Początkujący (250 p.)
0 głosów
1 odpowiedź 145 wizyt
pytanie zadane 17 kwietnia 2018 w C i C++ przez Jopinho Nowicjusz (120 p.)
+2 głosów
1 odpowiedź 302 wizyt
pytanie zadane 18 kwietnia 2015 w C i C++ przez Sopri Nowicjusz (220 p.)

88,701 zapytań

137,307 odpowiedzi

306,729 komentarzy

58,891 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...