天道酬勤,学无止境

python

Kivy 和 android 共享首选项(Kivy and android sharedpreferences)

问题 我正在寻找一种从 Kivy 框架在 android 设备上持久存储设置的方法。 我发现 Kivy 文档在这个特定领域中提供了全面的信息,但含糊不清。 它提到的三种方法(对不起,没有足够的信誉为clicable环节,为客户提供的,我会很高兴,如果有人能解决这些链接kivy.org相对路径): [存储] ./docs/api-kivy.storage.html#module-kivy.storage [设置] ./docs/api-kivy.uix.settings.html [配置] ./docs/api-kivy.config.html 除此之外,我知道我可以通过 pickle 或数据库将数据存储在文件中,但我想使用特定的共享首选项,或者至少是任何 Android/Kivy 特定的持久存储。 但是,我找不到任何比较或解释它们有何不同以及如何使用它们。 任何人都可以解释一下,已经使用过它们吗? 实际上,我 80% 确定这两种方法都没有使用 Android 的共享首选项,因此我考虑使用 jnius (4),为此我已经尝试过(方法 1,2/3?,4),基于简单的你好世界示例: from kivy.app import App from kivy.uix.button import Button import jnius from kivy.config import Config

2021-09-21 18:41:17    分类:技术分享    python   kivy   pyjnius

django rest framework 3 ImageField 发送 ajax 结果“没有提交文件。”(django rest framework 3 ImageField send ajax result “No file was submitted.”)

问题 我有一个带有 Django Rest Framework 的 API 端点来上传图像。 你能发现我做错了什么吗? #models.py class test(models.Model): ... upload_path = 'upload/' image = models.ImageField(upload_to=upload_path, null=True, blank=True) ... #serializers.py class TestSerializer(serializers.ModelSerializer): image = serializers.ImageField( max_length=None, use_url=True, ) class Meta: model = test fields = ('id','name','image',...) #views.py @api_view(['GET', 'POST']) def test_list(request, site_id, block_id): .... if request.method == 'POST': serializer = TestSerializer(data=request.DATA) if serializer.is_valid(): serializer.save()

2021-09-21 18:37:31    分类:技术分享    python   ajax   django

在 Tkinter 条目小部件中获取光标位置(Getting Cursor position in Tkinter entry widget)

问题 我的 tkinter 程序中有一个条目小部件。 假设我在其中输入了大约 10 个单词,然后转到另一个条目小部件进行输入。 现在,当我重新单击我的条目小部件 1(前一个)时,光标会根据单击位置移动到该字符上。 如何获取该小部件的光标位置索引? 我参考了 http://effbot.org/tkinterbook/entry.htm 文档,但找不到合适的方法来获取光标位置。 谢谢。 回答1 您可以使用 index 方法获取当前INSERT位置的索引。 from Tkinter import * def get_info(): print e.index(INSERT) root = Tk() e = Entry(root) e.pack() Button(root, text="get info", command=get_info).pack() root.mainloop()

2021-09-21 18:32:16    分类:技术分享    python   tkinter

Protobuf 不会序列化默认值(Protobuf doesn't serialize default values)

问题 我正在为 python 使用 Protobuf。 我一直在尝试使用默认值,但每次运行 SerializeToString() 时我什么也得不到。 例如, 这是我的 .proto 文件对象 message Test{ optional string lol = 1 [default="HI"]; optional int32 num = 2 [default=200]; } 我跑 test = packets_pb2.Test() print(test.num) print(test.SerializeToString()) 并为 print(test.num) 获得 200 但对于 SerializeToString() 没有结果(空) 我希望我的默认值被序列化。 知道如何完成这项工作吗? 提前致谢。 回答1 这是按预期工作的。 默认值不在线路上发送。 相反,接收端假定如果一个字段不存在,那么它应该使用默认值。 这通过不发送公共值来节省线路上的空间。 这确实意味着客户端和服务器必须就默认值达成一致; 您通常不应更改.proto文件中的默认值。 请记住,默认值的主要目的是能够处理来自该字段存在之前构建的旧客户端的消息。 因此,这些客户端显然无法在线路上发送默认值,因为他们对此一无所知。 回答2 对于使用的Protobuf 3人,有序列化使用默认值的方式including

2021-09-21 18:28:14    分类:技术分享    python   protocol-buffers

使用 Python 在非常大的图像中进行高性能变量模糊(High performance variable blurring in very big images using Python)

问题 我有大量想要模糊的大图像(例如 15000x15000 像素)。 我需要使用距离函数来模糊图像,所以我离图像中的某些区域越远,模糊越重。 我有一个距离图,描述给定像素距区域的距离。 由于图像量很大,我必须考虑性能。 我看过 NumPY/SciPY,它们有一些很棒的功能,但它们似乎使用固定的内核大小,我需要根据与前面提到的区域的距离来减少或增加内核大小。 我如何在python中解决这个问题? 更新:到目前为止,我的解决方案基于rth的回答: # cython: boundscheck=False # cython: cdivision=True # cython: wraparound=False import numpy as np cimport numpy as np def variable_average(int [:, ::1] data, int[:,::1] kernel_size): cdef int width, height, i, j, ii, jj width = data.shape[1] height = data.shape[0] cdef double [:, ::1] data_blurred = np.empty([width, height]) cdef double res cdef int sigma, weight for i in

2021-09-21 18:28:04    分类:技术分享    python   image-processing   numpy   scipy   cython

使用 Python 在非常大的图像中进行高性能变量模糊(High performance variable blurring in very big images using Python)

问题 我有大量想要模糊的大图像(例如 15000x15000 像素)。 我需要使用距离函数来模糊图像,所以我离图像中的某些区域越远,模糊越重。 我有一个距离图,描述给定像素距区域的距离。 由于图像量很大,我必须考虑性能。 我看过 NumPY/SciPY,它们有一些很棒的功能,但它们似乎使用固定的内核大小,我需要根据与前面提到的区域的距离来减少或增加内核大小。 我如何在python中解决这个问题? 更新:到目前为止,我的解决方案基于rth的回答: # cython: boundscheck=False # cython: cdivision=True # cython: wraparound=False import numpy as np cimport numpy as np def variable_average(int [:, ::1] data, int[:,::1] kernel_size): cdef int width, height, i, j, ii, jj width = data.shape[1] height = data.shape[0] cdef double [:, ::1] data_blurred = np.empty([width, height]) cdef double res cdef int sigma, weight for i in

2021-09-21 18:26:09    分类:技术分享    python   image-processing   numpy   scipy   cython

如何将以下文件名转换为 Python 中的正则表达式?(How can I translate the following filename to a regular expression in Python?)

问题 我现在打字时正在与正则表达式作斗争。 我想确定以下示例文件的模式: b410cv11_test.ext 。 我希望能够搜索与上述示例文件的模式匹配的文件。 我从哪里开始(如此迷茫和困惑)以及获得最匹配文件模式的解决方案的最佳方法是什么? 提前致谢。 进一步澄清问题: 我希望模式如下:必须以“b”开头,后跟三位数字,然后是“cv”,然后是两位数字,然后是下划线,然后是“release”,然后是 .'ext' 回答1 既然您对文件名有了人类可读的描述,就可以很简单地将其转换为正则表达式(至少在这种情况下;) 必须从 插入符号 ( ^ ) 将正则表达式锚定到您要匹配的内容的开头,因此您的 re 必须以此符号开头。 'b', re 中的任何非特殊字符都将按字面匹配,因此您只需在这部分使用“b”: ^b 。 后跟 [...] 数字, 这在一定程度上取决于您使用的 re 类型: 最通用的表达方式是使用方括号 ( [] )。 这些意味着“匹配其中列出的任何一个字符。例如[ASDF]将匹配A或S或D或F , [0-9]将匹配 0 到 9 之间的任何内容。 您的 re 库可能有“任何数字”的快捷方式。 在sed和awk您可以使用[[:digit:]] [sic!],在 python 和许多其他语言中,您可以使用\d 。 所以现在你重新读取^b\d 。 其次是三个 [...]

2021-09-21 18:22:43    分类:技术分享    python   regex

从子目录或相对路径导入包(importing a package from a subdir or relative path)

问题 这是我的目录设置: mydir ├── script1.py └── shared ├── otherstuff ├── script2.py └── pkg ├── box.py └── __init__.py script2.py以 import pkg 而且效果很好。 当我在script1.py包含同一行时,我得到: Traceback (most recent call last): File "script1.py", line 1, in <module> import pkg 有没有什么好方法可以让语法在script1.py如此简单? 过去一个小时我一直在阅读有关PYTHONPATH和sys.path的信息,但我正在尝试为我的存储库提供一些基本功能,而且我无法相信每次我想运行脚本时都需要修改PYTHONPATH 。 我在这里缺少什么? 将pkg放入script1.py的最佳方法是什么? 回答1 你必须要做: from shared import pkg 此外,您的shared目录应该有一个__init__.py文件 回答2 我在 python 3.x 中测试过,你可以这样做 - import shared.pkg 或者 from shared import pkg 回答3 如果您不想在shared创建__init__.py文件并使用import shared

2021-09-21 18:22:28    分类:技术分享    python   packages

使用 nltk 和 wordnet 将复数名词词形还原(lemmatize plural nouns using nltk and wordnet)

问题 我想使用 from nltk import word_tokenize, sent_tokenize, pos_tag from nltk.stem.wordnet import WordNetLemmatizer from nltk.corpus import wordnet lmtzr = WordNetLemmatizer() POS = pos_tag(text) def get_wordnet_pos(treebank_tag): #maps pos tag so lemmatizer understands from nltk.corpus import wordnet if treebank_tag.startswith('J'): return wordnet.ADJ elif treebank_tag.startswith('V'): return wordnet.VERB elif treebank_tag.startswith('N'): return wordnet.NOUN elif treebank_tag.startswith('R'): return wordnet.ADV else: return wordnet.NOUN lmtzr.lemmatize(text[i], get_wordnet_pos(POS[i][1])) 问题是 POS

2021-09-21 18:20:01    分类:技术分享    python   nltk   wordnet   lemmatization

关闭 Tkinter 后运行 wxPython(Running wxPython after closing Tkinter)

问题 我们有两个应用程序,一个使用 Tkinter 接口开发,另一个使用 wxPython 构建。 两者都相当复杂。 运行完 Tkinter 应用程序后,我希望在 Tkinter 应用程序中选择一个按钮后运行 wxPython 应用程序。 是否可以切换事件循环,以便 Tkinter 应用程序可以无缝切换到 wxPython GUI? 而下面做工作后root.destroy在Tkinter的应用程序: os.system('python wxGUI.py') 最终的程序需要捆绑到一个用于多个操作系统的独立应用程序中,因此只有当我为 wxPython 应用程序创建单独的py2app或py2exe并以这种方式调用它(这并不理想)时,此解决方案才有效。 回答1 可能实现此目的最简单的方法是将 wxPython 放入一个单独的线程中,并在您想调用 wxPython 应用程序时隐藏 Tkinter 应用程序。 我只是把这个例子放在一起,它似乎对我有用: import Tkinter import wxapp import wx from threading import Thread ######################################################################## class WxThread(Thread): """""" #-

2021-09-21 18:19:34    分类:技术分享    python   loops   events   tkinter   wxpython