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

PySide6 - Using .ui files

VPS Starter Arubacloud
0 głosów
523 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ź 433 wizyt
pytanie zadane 15 grudnia 2020 w C i C++ przez Foszy Początkujący (250 p.)
0 głosów
1 odpowiedź 175 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,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...