【问题标题】:Is there a way to have 2 icons when using elixir-desktop?使用 elixir-desktop 时有没有办法有 2 个图标?
【发布时间】:2023-02-02 21:26:47
【问题描述】:

背景

我有一个个人项目,它是用于 PC Windows 的长生不老药桌面应用程序。它工作得很好,但现在我想给它一个图标。

这通常在以下模块中完成:

defmodule WebInterface.Application do
  # See https://hexdocs.pm/elixir/Application.html
  # for more information on OTP Applications
  @moduledoc false

  use Application

  alias Desktop
  alias Manager
  alias WebInterface.{Endpoint, Telemetry}
  alias WebInterface.Live.MenuBar

  @impl true
  def start(_type, _args) do
    children = [
      Telemetry,
      {Phoenix.PubSub, name: WebInterface.PubSub},
      Endpoint,
      Manager,
      {Desktop.Window,
       [
         app: :web_interface,
         id: WebInterface,
         title: "Market Manager",
         size: {900, 960},
         menubar: MenuBar,
         icon: "static/images/resized_logo_4.png", # THIS IS WHERE THE ICON IS SET
         url: &WebInterface.Endpoint.url/0
       ]}
    ]

    opts = [strategy: :one_for_one, name: WebInterface.Supervisor]
    Supervisor.start_link(children, opts)
  end

  @impl true
  def config_change(changed, _new, removed) do
    WebInterface.Endpoint.config_change(changed, removed)
    :ok
  end
end

问题

这里的问题是我必须为 Windows 任务栏和应用程序的顶部图标使用相同的图像:

这里的问题是,虽然底部 Windows 栏上的徽标(标记为黄色)很好看,但顶部的徽标却变形了,而且非常糟糕。

对此的解决方法是在底部有一个图标,在顶部有一个图标。 但是在检查了demo app 之后,我没有找到这样做的方法。

问题

这有可能实现吗?如果是这样,如何?

【问题讨论】:

  • 我认为您需要自己从最新版本构建 wx{Widgets,Python} 以修复图标模糊。
  • 我的本地计算机具有可从 wxwidgets 网站下载的最新版本(最新稳定版本:3.2.1)。你是说这个版本已经过时了吗?
  • wxPython 呢?我不知道/不记得他们的最新版本是基于什么......
  • 我没有尝试过 wxPython。老实说,我不确定 wxPython 和 wxWidgets 之间的关系。这不像我可以删除 wxWidgets 并安装 wxPython 然后让一切都像以前一样工作。
  • 此外,这还会迫使我的用户在本地机器上安装 Python,这要求太高了。

标签: elixir wxwidgets desktop


【解决方案1】:

在 wxWidgets API 级别,您可以使用 wxTopLevelWindow::SetIcons()(注意“s”)指定不同大小的图标,但我不知道这个功能在 Erlang 绑定中是否可用。

另一种方法是使用 Windows 资源中的图标,但同样不确定您是否可以为 Erlang 应用程序使用自定义资源。

【讨论】:

    【解决方案2】:

    解决方案

    在几个地方询问后,我找到了一些答案。事实上,这篇文章可以总结为两个问题:

    1. 为什么图标如此扭曲?
    2. 我可以为应用程序设置一个与底部栏上的图标不同的图标吗?

      为什么图标如此扭曲?

      在查看官方 wxWidgets 论坛并获得那里可爱的人们的帮助后,我被指出我的图标不符合图标的 MSW 标准。在我的例子中,这些需要是 32x32 或 16x16。

      研究:

      我可以使用与底部栏上的图标不同的应用程序图标吗?

      这个有点棘手。直接使用 wxWidgets 有可能通过使用覆盖图标来实现。但是,我使用的库绑定 elixir-desktop 不支持这一点,这意味着图标需要相同。

      这可能是最好的,因为正如 wxWidgets 社区所提到的,即使这样使用覆盖图标在 MSW 应用程序中也不是标准的,我的情况就是如此。

      研究:

    【讨论】:

      猜你喜欢
      • 2019-12-18
      • 2021-08-19
      • 2021-10-18
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 2012-04-27
      • 2021-05-21
      相关资源
      最近更新 更多