环境搭建
基于python3.12+pyqt5
pip3 install PyQt5
pip3 install pyinstallerpyinstaller --onefile --windowed test.py
代码
新建main.py
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLineEdit, QFileDialog class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 设置窗口标题和大小 self.setWindowTitle('xslx文件选择器') self.setGeometry(100, 100, 300, 100) # 创建垂直布局 mainLayout = QVBoxLayout() # 第一行布局 firstRowLayout = QHBoxLayout() # 输入框 self.lineEdit = QLineEdit(self) self.lineEdit.setReadOnly(True) # 设置输入框为只读firstRowLayout.addWidget(self.lineEdit) # 选择CSV文件的按钮 btnLoadCsv = QPushButton('选择xlsx文件', self) btnLoadCsv.clicked.connect(self.loadCsvFile) firstRowLayout.addWidget(btnLoadCsv) # 将第一行布局添加到主布局 mainLayout.addLayout(firstRowLayout) # 第二行布局(这里只放一个按钮作为示例) secondRowLayout = QHBoxLayout() btnSecond = QPushButton('点击', self)# 这里可以连接按钮的clicked信号到任何你希望执行的槽函数btnSecond.clicked.connect(self.on_second_button_clicked) secondRowLayout.addWidget(btnSecond) # 将第二行布局添加到主布局 mainLayout.addLayout(secondRowLayout) # 设置窗口的主布局 self.setLayout(mainLayout) def loadCsvFile(self): # 使用文件对话框选择CSV文件 fileName, _ = QFileDialog.getOpenFileName(self, "选择xlsx文件", "", "xlsx files (*.xlsx)") if fileName: # 将选中的文件路径显示在输入框中 self.lineEdit.setText(fileName) # 定义槽函数 def on_second_button_clicked(self): # 当按钮被点击时,打印信息到控制台 print("按钮被点击了!")
if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() ex.show() sys.exit(app.exec_())
打包
pyinstaller --onefile --windowed main.py