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

背景介绍

最近在想了解一下pyside6 的使用,在使用 Qt Designer 制作完成ui文件后使用命令:

pyside6-uic mainwindows.ui > ui_mainwindow.py

把ui文件变成py文件。
但是在运行的时候却报错了,

Traceback (most recent call last):
  File "e:/project/picture/pygui/side6py04.py", line 23, in <module>
    from ui_mainwindow import Ui_MainWindow
ValueError: source code string cannot contain null bytes

错误解决方法

查了一下资料,才发现,
原来是ui文件转换成py文件之后,.py文件的编码格式是“UTF-16 LE", 不是utf8格式的导致错误。因此只需要把.py文件重新编码保存就可以了。
在vs code中的方法是
ui文件转换成的py文件,原来的编码格式是UTF-16 LE
点击一下”UTF-16 LE"
重新选择新的“utf-8”格式
改变编码方式并保存
选择UTF-8编码格式

成功运行

改变编码之后会再次运行,没有报错
成功运行界面

### Python 开发学生选课系统示例 #### 创建项目环境 为了构建一个稳定可靠的学生选课系统,建议使用虚拟环境来隔离依赖项。通过命令行工具安装并激活虚拟环境: ```bash python -m venv myenv source myenv/bin/activate # Linux 或 macOS myenv\Scripts\activate # Windows ``` 接着,在环境中安装必要的包,如 `PyQt6` 和 `mysql-connector-python`。 ```bash pip install PyQt6 mysql-connector-python ``` #### 数据库连接模块 定义用于处理 MySQL 数据库操作的基础类,以便于后续的功能扩展和维护[^1]。 ```python import mysql.connector class DatabaseConnection: def __init__(self, host="localhost", user="root", password="", database=""): self.connection = None try: self.connection = mysql.connector.connect( host=host, user=user, passwd=password, db=database ) if self.connection.is_connected(): print("Successfully connected to the database.") except Exception as e: print(f"Error connecting to MySQL platform: {e}") def execute_query(self, query, params=None): cursor = self.connection.cursor() result = None try: cursor.execute(query, params) result = cursor.fetchall() self.connection.commit() except Exception as error: print(f"The error '{error}' occurred") finally: if cursor is not None and self.connection is not None: cursor.close() return result def close_connection(self): if self.connection is not None: self.connection.close() ``` #### 主窗口设计 利用 Qt Designer 设计图形化界面,并将其转换成 Python 文件。这里展示如何加载 `.ui` 文件以及初始化主窗口中的组件[^2]。 ```python from PyQt6 import uic from PyQt6.QtWidgets import QApplication, QMainWindow class MainWindow(QMainWindow): def __init__(self): super().__init__() uic.loadUi('main_window.ui', self) if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` #### 功能逻辑实现 针对具体业务需求编写相应的函数,比如添加新课程、删除已有课程、显示所有可选项等。下面给出部分核心方法的伪代码表示形式[^3]。 ```python def add_course(course_name, teacher_name, max_students): """向数据库中插入一条新的课程记录""" pass def remove_course_by_id(course_id): """根据ID移除指定的一门课程""" pass def list_all_courses(): """获取当前学期开设的所有课程列表""" pass def enroll_student(student_id, selected_courses_ids): """允许某位同学注册选定的若干门科目""" # 验证是否有重复报名情况发生 existing_selections = get_current_enrollment_status(student_id) conflicting_timeslots = check_time_conflicts(selected_courses_ids + existing_selections) if conflicting_timeslots: raise ValueError("Selected courses contain time conflicts!") total_credits = sum([get_credit_hours(cid) for cid in selected_courses_ids]) if total_credits > MAX_CREDITS_PER_SEMESTER: raise ValueError("Total credits exceed limit!") update_database_with_new_selections(student_id, selected_courses_ids) def drop_selected_courses(student_id, deselected_courses_ids): """取消已登记的选择""" pass ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值