على الرغم من أن هذه مشكلة 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();
}
لكن هل أسقطت الملف أيضًا من نافذة إذن مرتفعة؟ للتأكد من وجود مشكلة ؛ سأفتح مستكشف Windows / متصفح الملفات في أذونات مرتفعة أيضًا ؛ كما أتخيل ، سيعرض Linux نفس السلوك. أعتقد أنه في الواقع شيء من نظام التشغيل يحاول بشكل عام منع مثل هذه التبادلات السياقية ؛ مع الاستثناء الوحيد الذي أعتقد أنه المخزن المؤقت للنسخ واللصق.
أعتقد أنه الشيء الوحيد لـ Windows ، لكنني لم أختبر على سبيل المثال Ubuntu ، لذا فنحن نرحب بك لتجربة sudo python multiple_dropfile.py
من الأمثلة ، أو إحدى كتل الكود أعلاه.
فيما يتعلق بالأذونات المرتفعة ، أعتقد أن cmd /c explorer
الذي تم إطلاقه كمسؤول يجب أن يكون كافيًا للحصول على أذونات مرتفعة ، ولكن حتى مع ذلك ، هناك حالة ممنوعة ولا يتم إرجاع أي شيء من الحدث.
حقا حقا ربما لا يكون هذا في مجال Kivy لإصلاحه ؛ وفي الواقع ربما يكون خارج SDL. هذا ما لم نخطط لفضح طريقة لتغيير عامل تصفية تمرير الرسائل لكل مستوى MIC على Windows ؛ لكنني أعتقد أيضًا أنه سيكون لديك مشكلة مماثلة على Linux ؛ لأنهم بدأوا أيضًا في الفصل بشكل أعمق لعمليات sudo ؛ على الرغم من تشغيلهما بنفس المستخدم ، إلا أنه يوجد بالتأكيد فرق بين عملية sudo و non-sudo. لذلك يجب أيضًا اكتشاف إصلاح لنظام Linux ومن المحتمل الكشف عنه أيضًا ؛ لكني أعتقد أنه ينبغي ترك مثل هذه التفاصيل للمبرمج لتنفيذها حسب الحاجة لمجال مشكلتهم. هذا هو فقط 2 سنتي بالرغم من ذلك.
ربما يجب علينا فقط توثيق المشكلة ثم إغلاقها.
التعليق الأكثر فائدة
ربما يجب علينا فقط توثيق المشكلة ثم إغلاقها.