Kivy: SDL_dropfile 不适用于提升的权限

创建于 2017-02-18  ·  5评论  ·  资料来源: kivy/kivy

版本

  • 操作系统:Windows
  • SDL:2.0.5

描述

虽然这几乎是 SDL2 唯一的问题,但我们至少需要在文档中提及。 我在他们的错误跟踪器中找不到任何相关问题,所以如果有人已经在那里注册,戳他们可能会很有用,或者检查他们的主/主干分支是否没有修复。

代码和日志

from kivy.app import runTouchApp
from kivy.core.window import Window

def _drop(window, file_path):
    print(file_path)

Window.bind(on_dropfile=_drop)
runTouchApp()

SDL2示例

#include <SDL2/SDL.h>

int main() {
    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_Window *window = SDL_CreateWindow(
        "Drag-and-Drop",
        SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED,
        800, 600, SDL_WINDOW_SHOWN
    );

    int running = 1;
    while (running) {
        SDL_Event event;
        while (SDL_PollEvent(&event)) {
            switch (event.type) {
            case SDL_DROPFILE:
                printf("Dropped file: %s\n", event.drop.file);
                break;
            case SDL_QUIT:
                running = 0;
                break;
            }
        }
    }

    SDL_DestroyWindow(window);
    SDL_Quit();
}
upstream

最有用的评论

我们可能应该只记录问题然后关闭它。

所有5条评论

但是您是否也从提升的权限窗口中删除了文件? 确保它存在问题; 我也会以提升的权限打开 Windows 资源管理器/文件浏览器; 正如我想象的那样,Linux 会显示相同的行为。 我认为这实际上是一个操作系统的东西,它通常试图阻止这种上下文交换; 我认为唯一的例外是复制和粘贴缓冲区。

我相信这是 Windows 唯一的事情,但我还没有在例如 Ubuntu 上进行测试,所以欢迎您从示例中尝试sudo python multiple_dropfile.py ,或者上面的代码块之一。

关于提升的权限,我相信以管理员身份启动的cmd /c explorer应该足以获得提升的权限,但即便如此,也存在不可行的情况,并且事件没有返回任何内容。

真的; 这可能不在 Kivy 的范围内修复; 实际上可能在 SDL 之外。 除非我们计划公开一种方法来更改 Windows 上每个 MIC 级别的消息传递过滤器; 但我也相信你在 Linux 上也会遇到类似的问题; 因为他们也开始对 sudo 进程进行更深入的分离; 即使它们以同一用户身份运行,但 sudo 和非 sudo 进程之间肯定存在差异。 因此,还必须发现 Linux 的修复程序,并且也可能会暴露出来; 但我认为这些细节应该留给程序员根据他们的问题域的需要来实现。 不过,这只是我的 2 美分。

我们可能应该只记录问题然后关闭它。

此页面是否有帮助?
0 / 5 - 0 等级