首页 > 编程问答 >为什么我的exe在pyInstaller之后最小化时消失了

为什么我的exe在pyInstaller之后最小化时消失了

时间:2024-07-24 08:55:28浏览次数:13  
标签:python windows pycharm system-tray

当在控制台中测试代码时,它运行正常并且所有功能都正常工作,并且在 pyInstaller 之后问题出现了。当我按下最小化按钮时,图标不会出现在系统托盘中,而是消失,并且通常该程序不在窗口中,但它在后台运行?如果有人可以帮忙:) 我只尝试更新 pyInstaller 和 pystray,不知道该怎么做。

# -*- mode: python ; coding: utf-8 -*-


a = Analysis(
    ['web_search.py'],
    pathex=[],
    binaries=[],
    datas=[('ImotSearch_MIcon.png', '.'), ('sent_ads.json', 'web')],
    hiddenimports=['requests', 'pystray'],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=True,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [('v', None, 'OPTION')],
    name='web_search',
    debug=True,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon=['ImotSearch_MIcon.png'],
)`

button:
def quit_window(icon, item):
    icon.stop()
    root.destroy()

def show_window(icon, item):
    icon.stop()
    root.after(0, root.deiconify)

def hide_window():
    root.withdraw()
    image = Image.open(r"ImotSearch_MIcon.png")
    menu = (item('Exit', quit_window), item('Open', show_window))
    icon = pystray.Icon("name", image, "web search", menu)
    icon.run()

minimize_button = tk.Button(root, text="Minimize", command=hide_window)
minimize_button.pack(pady=5)````

问题在于你调用 root.withdraw() 隐藏主窗口,但这会导致在最小化时窗口完全消失,而不仅仅是进入系统托盘。

为了解决这个问题,不要使用 root.withdraw() ,而是使用 root.iconify() 来最小化窗口。这样窗口就会最小化到任务栏,并且可以通过点击系统托盘图标来恢复。

以下是修改后的代码:

import tkinter as tk
from PIL import Image
import pystray
from pystray.menu import Menu as menu
from pystray.menu import MenuItem as item

# ... 其他代码 ...

def hide_window():
    root.iconify()  # 最小化窗口到任务栏
    image = Image.open(r"ImotSearch_MIcon.png")
    menu = (item('Exit', quit_window), item('Open', show_window))
    icon = pystray.Icon("name", image, "web search", menu)
    icon.run()

# ... 其他代码 ...

这样修改后,当你点击“Minimize”按钮时,窗口会最小化到任务栏,并且在系统托盘中会出现一个图标。你可以通过点击该图标来恢复窗口,或者选择“Exit”退出程序。

标签:python,windows,pycharm,system-tray
From: 78712339

相关文章

  • Python查找字符串的CRC32
    我尝试获取字符串数据类型变量的CRC32,但出现以下错误:>>>message='helloworld!'>>>importbinascii>>>binascii.crc32(message)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:aby......
  • 使用python,如何创建重复的工作时间表
    这是我们公司的小组工作安排表。为三班制,2组日夜工作,1组休息。重复白天工作4天休息2天,然后再次夜间工作4天休息2天的时间表。我想使用python(pandas)自动安排在8月9日之后。抱歉英语不好,提前感谢您的帮助以下是使用Python和Pandas创建重复工作时间表的代码......
  • venv 已激活,但 pip 安装仍然默认进行,并且 python 在源代码中看不到该库
    在终端shell中的vscode中输入“whichpython”显示默认路径:C:\Users\erjan\AppData\Local\Programs\Python\Python311\python.exe(my_venv)但是(my_venv)意味着我的venv处于活动状态,我做了pipinstalltransformers,但下面的代码仍然显示错误-无法看到......
  • 在Python多处理中执行二进制信号量或互斥体以进行上下文切换操作
    我正在尝试自动化win应用程序和java应用程序之间的同步关系。我的标准是:启动win和jav应用程序在jav应用程序中执行命令等待jav应用程序的响应使用jav应用程序的响应到Windows应用程序作为输入。在jav应用程序中执行命令win应用程序......
  • 在spyder-python上随机出现的这些奇怪的亮点是什么
    在此处输入图像描述每次我单击此按钮或进行任何更改时,都会创建奇怪的突出显示,当我最小化功能时更是如此。有什么建议如何摆脱这些或可能的原因是什么?谢谢!我尝试更改外观首选项中的设置,但无法影响问题。很抱歉,我无法直接查看或与Spyder界面交互。我是一个AI......
  • 比较Python字典并找到缺失的元素
    我遇到了一个问题,我已经尝试了几天但没有得到任何结果。我想比较两个字典,在一个字典中有“赛前”足球比赛,在第二个字典中有“现场”足球比赛。我想将它们相互比较并打印它们(如果有)没有赛前比赛直播。示例1pre=[{"Home":"Genoa","Away":"In......
  • Python使用Visual Studio打印功能不显示输出
    任务:检查一个整数是正数还是负数。检查整数是否能被2整除。当输入0时,我需要退出循环并报告每个计数和总和。print函数没有显示任何输出。这是我从defmain()开始使用的代码defmain():countpositive=0countnegative=0count_divisible_by_2=0sump......
  • Python 中的像素最小二乘法
    我有一个非线性前向模型,它计算每个像素参数w的灰度图像。我还可以使用scipys优化函数来反转模型。我目前遇到的唯一问题是图像的大小使得这个解决方案非常慢...比如7%的像素在40分钟内计算得很慢。我使用for循环遍历所有像素并按像素应用模型。我尝试过......
  • SQL 命令在手动运行时工作正常(SQL Developer),但在 Python 的 oracledb 模块中给出 ORA-
    我正在使用OracleSQL数据库,并且我想运行该命令ALTERSESSIONSETNLS_DATE_FORMAT='YYYY-MM-DD';当我从SQLDeveloper应用程序手动运行它时,它工作正常。但是,当我使用oracledb模块从Python运行它时,出现以下错误:ErrorrunningSQLscript:ORA-00922:mi......
  • .py-script 仅通过终端运行,而不是通过 Pycharm 的“运行”按钮运行
    我使用虚拟环境在PyCharm中创建了一个新的Python项目。这是我第一次使用虚拟环境,而且我还是Python和PyCharm的初学者。由于某种原因,Python无法再找到任何包,即使我确信我在虚拟环境中安装了scikit-learn。使用终端时,只要我使用源代码激活虚拟环境,一切都会正常工作........