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

PySide6 - Using .ui files

Object Storage Arubacloud
0 głosów
560 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ź 471 wizyt
pytanie zadane 15 grudnia 2020 w C i C++ przez Foszy Początkujący (250 p.)
0 głosów
1 odpowiedź 178 wizyt
pytanie zadane 17 kwietnia 2018 w C i C++ przez Jopinho Nowicjusz (120 p.)
+2 głosów
1 odpowiedź 364 wizyt
pytanie zadane 18 kwietnia 2015 w C i C++ przez Sopri Nowicjusz (220 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...