在pycharm直接运行是正常显示的,但采用pyinstaller打包成exe后,菜单栏就会被收缩
如果在使用PyInstaller打包成exe后发现菜单栏被收缩的问题,这可能是由于PyQt的默认样式与PyInstaller的打包方式不兼容所导致的。
一种解决方法是在代码中显式地设置PyQt的样式,以确保打包后的exe文件能够正确显示菜单栏。可以尝试以下步骤:
首先,确保你已经安装了pyqt5-tools
库,可以通过运行pip install pyqt5-tools
来安装。
在代码的开头添加以下导入语句:
import os
os.environ['QT_API'] = 'pyqt5'
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
# 设置PyQt的样式
app = QApplication.instance()
app.setStyle('Fusion')
这将使用"fusion"样式来替代默认的样式,通常在大多数平台上能够保持一致和正确显示。
重新使用PyInstaller进行打包,并测试生成的exe文件是否能够正确显示菜单栏。
加一些窗口参数试一试
pyinstaller --onefile --windowed --noconsole script.py
是在同一台机器运行的吗?
有可能是打包环境和开发环境的版本不同导致的.
https://www.cnblogs.com/jackadam/p/10342627.html
2.2:打包指定文件
命令行模式:
--add-data file 可以多次使用,注意格式为引号里面有一个文件名,有一个分号,一个点。
例: --add-data "default.docx;."
修改spec模式:
datas=[('default.docx', '.')],
2.3:打包后调用静态文件
#根据系统运行位置确认basedir路径
if getattr(sys, 'frozen', None):
basedir = sys._MEIPASS
else:
basedir = os.path.dirname(__file__)
#调用
#接上例,打包进去的default.docx,加到了.这个根目录。
docx=os.path.join(basedir, 'default.docx')
加入文件的时候,有一个参数‘.’,这是加入包的路径,后面引用的时候,如果是解压运行,就到解压目录的根目录找。
如果不是解压的,就到该文件路径下找。
如果加入更多的静态文件,可以相应的修改加入路径和引用路径。