Я написал следующий код:
openFileDialog.py
#-*- coding: utf-8 -*-
from kivy.lang import Builder
Builder.load_string("""
<TestWidget>:
BoxLayout:
orientation: 'vertical'
size: root.size
Button:
id: button1
text: "open dialog"
font_size: 48
on_press: root.buttonClicked()
""")
from kivy.app import App
from kivy.uix.widget import Widget
class TestWidget(Widget):
def __init__(self, **kwargs):
super(TestWidget, self).__init__(**kwargs)
def buttonClicked(self):
import tkinter
from tkinter import filedialog
root = tkinter.Tk()
root.withdraw()
dock = ""
dock = "/Users/mac/Desktop"
typ = [('text file','*.txt')]
filePath = filedialog.askopenfilename(filetypes = typ, initialdir = dock)
print(filePath)
class TestApp(App):
def __init__(self, **kwargs):
super(TestApp, self).__init__(**kwargs)
def build(self):
return TestWidget()
if __name__ == '__main__':
TestApp().run()
Когда я запускал этот код (openFileDialog.py) на Ma c, Kivy разбился, не открывая диалоговое окно файла, и напечатал следующую ошибку:
2020-06-17 16:56:59.549 python[1319:35013] -[SDLApplication _setup:]: unrecognized selector sent to instance 0x7f85b168beb0
2020-06-17 16:56:59.577 python[1319:35013] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SDLApplication _setup:]: unrecognized selector sent to instance 0x7f85b168beb0'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff317a6ab1 __exceptionPreprocess + 256
1 libobjc.A.dylib 0x00007fff5bf513c6 objc_exception_throw + 48
2 CoreFoundation 0x00007fff3182129a -[NSObject(NSObject) __retain_OA] + 0
3 CoreFoundation 0x00007fff31748588 ___forwarding___ + 1478
4 CoreFoundation 0x00007fff31747f38 _CF_forwarding_prep_0 + 120
5 libtk8.6.dylib 0x000000010ef9031d TkpInit + 413
6 libtk8.6.dylib 0x000000010eee817e Initialize + 2622
7 _tkinter.cpython-37m-darwin.so 0x000000010ed10a0f _tkinter_create + 1183
8 python 0x0000000106355756 _PyMethodDef_RawFastCallKeywords + 230
9 python 0x0000000106491c82 call_function + 306
10 python 0x000000010648ea36 _PyEval_EvalFrameDefault + 42246
11 python 0x00000001064832ee _PyEval_EvalCodeWithName + 414
12 python 0x00000001063543e7 _PyFunction_FastCallDict + 231
13 python 0x00000001063d6591 slot_tp_init + 193
14 python 0x00000001063e0691 type_call + 241
15 python 0x0000000106355113 _PyObject_FastCallKeywords + 179
16 python 0x0000000106491d15 call_function + 453
17 python 0x000000010648ea36 _PyEval_EvalFrameDefault + 42246
18 python 0x0000000106354ef5 function_code_fastcall + 117
19 python 0x0000000106491c07 call_function + 183
20 python 0x000000010648ea36 _PyEval_EvalFrameDefault + 42246
21 python 0x00000001064832ee _PyEval_EvalCodeWithName + 414
22 python 0x000000010647dd1b builtin_exec + 347
23 python 0x0000000106355756 _PyMethodDef_RawFastCallKeywords + 230
24 python 0x0000000106491c82 call_function + 306
25 python 0x000000010648f978 _PyEval_EvalFrameDefault + 46152
26 python 0x00000001064832ee _PyEval_EvalCodeWithName + 414
27 python 0x00000001063543e7 _PyFunction_FastCallDict + 231
28 _event.cpython-37m-darwin.so 0x0000000107236dc1 __Pyx_PyObject_Call + 97
29 _event.cpython-37m-darwin.so 0x000000010723aadf __pyx_f_4kivy_6_event_14EventObservers__dispatch + 543
30 _event.cpython-37m-darwin.so 0x000000010723bf95 __pyx_f_4kivy_6_event_14EventObservers_dispatch + 581
31 _event.cpython-37m-darwin.so 0x000000010724bc9f __pyx_pw_4kivy_6_event_15EventDispatcher_25dispatch + 1023
32 python 0x00000001063557f8 _PyMethodDef_RawFastCallKeywords + 392
33 python 0x0000000106362144 _PyMethodDescr_FastCallKeywords + 84
34 python 0x0000000106491d05 call_function + 437
35 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
36 python 0x00000001064832ee _PyEval_EvalCodeWithName + 414
37 python 0x00000001063543e7 _PyFunction_FastCallDict + 231
38 python 0x0000000106358312 method_call + 130
39 _event.cpython-37m-darwin.so 0x0000000107236dc1 __Pyx_PyObject_Call + 97
40 _event.cpython-37m-darwin.so 0x000000010724bd0c __pyx_pw_4kivy_6_event_15EventDispatcher_25dispatch + 1132
41 python 0x00000001063557f8 _PyMethodDef_RawFastCallKeywords + 392
42 python 0x0000000106362144 _PyMethodDescr_FastCallKeywords + 84
43 python 0x0000000106491d05 call_function + 437
44 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
45 python 0x0000000106354ef5 function_code_fastcall + 117
46 python 0x0000000106358312 method_call + 130
47 _event.cpython-37m-darwin.so 0x0000000107236dc1 __Pyx_PyObject_Call + 97
48 _event.cpython-37m-darwin.so 0x000000010724bd0c __pyx_pw_4kivy_6_event_15EventDispatcher_25dispatch + 1132
49 python 0x00000001063557f8 _PyMethodDef_RawFastCallKeywords + 392
50 python 0x0000000106362144 _PyMethodDescr_FastCallKeywords + 84
51 python 0x0000000106491d05 call_function + 437
52 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
53 python 0x0000000106354ef5 function_code_fastcall + 117
54 python 0x0000000106358312 method_call + 130
55 _event.cpython-37m-darwin.so 0x0000000107236dc1 __Pyx_PyObject_Call + 97
56 _event.cpython-37m-darwin.so 0x000000010724bd0c __pyx_pw_4kivy_6_event_15EventDispatcher_25dispatch + 1132
57 python 0x00000001063557f8 _PyMethodDef_RawFastCallKeywords + 392
58 python 0x0000000106362144 _PyMethodDescr_FastCallKeywords + 84
59 python 0x0000000106491d05 call_function + 437
60 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
61 python 0x0000000106354ef5 function_code_fastcall + 117
62 python 0x0000000106358312 method_call + 130
63 _event.cpython-37m-darwin.so 0x0000000107236dc1 __Pyx_PyObject_Call + 97
64 _event.cpython-37m-darwin.so 0x000000010724bd0c __pyx_pw_4kivy_6_event_15EventDispatcher_25dispatch + 1132
65 python 0x00000001063557f8 _PyMethodDef_RawFastCallKeywords + 392
66 python 0x0000000106362144 _PyMethodDescr_FastCallKeywords + 84
67 python 0x0000000106491d05 call_function + 437
68 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
69 python 0x0000000106354ef5 function_code_fastcall + 117
70 python 0x0000000106358312 method_call + 130
71 _event.cpython-37m-darwin.so 0x0000000107236dc1 __Pyx_PyObject_Call + 97
72 _event.cpython-37m-darwin.so 0x000000010724bd0c __pyx_pw_4kivy_6_event_15EventDispatcher_25dispatch + 1132
73 python 0x00000001063557f8 _PyMethodDef_RawFastCallKeywords + 392
74 python 0x0000000106362144 _PyMethodDescr_FastCallKeywords + 84
75 python 0x0000000106491d05 call_function + 437
76 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
77 python 0x0000000106354ef5 function_code_fastcall + 117
78 python 0x0000000106358312 method_call + 130
79 python 0x0000000106355d92 PyObject_Call + 130
80 python 0x000000010648fba5 _PyEval_EvalFrameDefault + 46709
81 python 0x0000000106354ef5 function_code_fastcall + 117
82 python 0x0000000106491c07 call_function + 183
83 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
84 python 0x0000000106354ef5 function_code_fastcall + 117
85 python 0x0000000106491c07 call_function + 183
86 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
87 python 0x0000000106354ef5 function_code_fastcall + 117
88 python 0x0000000106491c07 call_function + 183
89 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
90 python 0x0000000106354ef5 function_code_fastcall + 117
91 python 0x0000000106491c07 call_function + 183
92 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
93 python 0x0000000106354ef5 function_code_fastcall + 117
94 python 0x0000000106491c07 call_function + 183
95 python 0x000000010648f978 _PyEval_EvalFrameDefault + 46152
96 python 0x0000000106354ef5 function_code_fastcall + 117
97 python 0x0000000106491c07 call_function + 183
98 python 0x000000010648e9a0 _PyEval_EvalFrameDefault + 42096
99 python 0x00000001064832ee _PyEval_EvalCodeWithName + 414
100 python 0x00000001064e6b30 PyRun_FileExFlags + 256
101 python 0x00000001064e5fa7 PyRun_SimpleFileExFlags + 391
102 python 0x0000000106513c03 pymain_main + 9635
103 python 0x0000000106327b4d main + 125
104 libdyld.dylib 0x00007fff5d7173d5 start + 1
)
Я также пробовал запустить openFileDialog.py на windows. Ошибка не возникла на windows.
Я также запустил simpleOpenFileDialog.py на моем Ma c.
Затем этот смог работать без ошибок.
simpleOpenFileDialog.py
import tkinter
from tkinter import filedialog
root = tkinter.Tk()
root.withdraw()
dock = ""
dock = "/Users/mac/Desktop"
typ = [('text file','*.txt')]
filePath = filedialog.askopenfilename(filetypes = typ, initialdir = dock)
print(filePath)
Другими словами, tkinter сам по себе не является проблемой.
Если я объединю tkinter и kivy, это вызовет проблемы на Ма c.
Есть ли решение этой проблемы?
Я разрабатываю Python 3.7 и AnacondaPrompt.