小编Ber*_*one的帖子

Python kivy - 如何减少 TextInput 的高度

我正在使用 kivy 为应用程序制作一个非常简单的 gui。没有什么复杂的,非常简单的布局。

尽管如此,我在使用 TextInputs 时遇到了困难......它们总是以全高显示,我无法使它们调整为“合理”的文本高度,例如高度。

我正在使用 kv 文件样式,因为我发现将它集成到现有应用程序中更简洁、更容易……我想尽可能减少应用程序的 gui-python 代码。

这是我为 TextInput 得到的(无用添加 gui 的其他部分)。

Python代码

# textInput.py
from kivy import require
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang.builder import Builder

Builder.load_file('path/to/kv/file/textInput.kv')

require('1.10.0')

class MainScreen(BoxLayout):
    pass

class Test(App):
    def build(self):
        self.title = 'Testing textInput'
        return MainScreen()

if __name__ == '__main__':
    Test().run()
Run Code Online (Sandbox Code Playgroud)

KV代码

# textInput.kv
<MainScreen>
    orientation: 'vertical'

    # Third section title
    Label:
        size_hint: (1, .1)
        text: 'Setup Connection'
        font_size: 25

    # Third section Box
    BoxLayout: …
Run Code Online (Sandbox Code Playgroud)

python user-interface kivy kivy-language

6
推荐指数
1
解决办法
9569
查看次数

docker 和 arm 的“FTDI USB 串行设备转换器现已断开连接”问题

我正在使用 Orange Pi PC PLUS2(emmc 内存,arv7l 32 位)通过串行连接(RS485)和使用 FTDI 芯片(sparkfun bob 09822)的串行转换器控制另一台设备。

我正在使用 docker 容器和 docker-compose 来嵌入我的应用程序并轻松部署/共享它。它没有做任何太复杂的事情,只是通过 rs485 从传感器连续读取(每半秒 1 个)值,将其存储在本地数据库中并将数据发送到我的服务器。

uname -a 给我:

Linux host-test 4.14.15-sunxi #28 SMP Mon Jan 29 07:24:48 CET 2018 armv7l GNU/Linux
Run Code Online (Sandbox Code Playgroud)

如果我在 docker 之外运行我的软件,一切正常,几周后我不会遇到任何崩溃。问题是,如果我使用 docker,几天之内我会收到以下错误 (dmesg):

[135431.500807] ftdi_sio ttyUSB0: ftdi_set_termios urb failed to set baudrate
[137213.011801] ftdi_sio ttyUSB0: ftdi_set_termios urb failed to set baudrate
[138650.664850] ftdi_sio ttyUSB0: ftdi_set_termios urb failed to set baudrate
[140559.020691] ohci-platform 1c1b400.usb: frame counter not updating; disabled
[140559.020972] ohci-platform 1c1b400.usb: …
Run Code Online (Sandbox Code Playgroud)

arm ftdi docker docker-compose orange-pi

6
推荐指数
1
解决办法
3451
查看次数

python 3 asyncio:使用 run_until_complete(asyncio.wait(coroutines_list)) 的协程执行顺序

我有一个可能是一个非常无用的问题,但尽管如此,我觉得我遗漏了一些对于理解 asyncio 工作原理可能很重要的东西。

我刚刚开始熟悉 asyncio,我编写了这段非常基本的代码:

import asyncio
import datetime
from random import randint


async def coroutine(i):
    start = datetime.datetime.now()
    print('coroutine {} started.'.format(i))
    n = randint(1, 11)
    await asyncio.sleep(n)
    end = datetime.datetime.now()
    print('coroutine {} finished after {} with random = {}.'.format(i, (end-start).seconds, n))
    return i


def simple():
    loop = asyncio.get_event_loop()
    cors = [coroutine(x) for x in range(20)]
    loop.run_until_complete(asyncio.wait(cors))


if __name__ == '__main__':
    simple()
Run Code Online (Sandbox Code Playgroud)

这是我得到的一个结果:

coroutine 3 started.
coroutine 9 started.
coroutine 15 started.
coroutine 4 started.
coroutine 10 started.
coroutine 16 …
Run Code Online (Sandbox Code Playgroud)

coroutine python-asyncio python-3.5

5
推荐指数
1
解决办法
2092
查看次数

如何在销毁后从 Terraform 清理由 helm_release 资源留下并运行的 k8s 资源

我在 Terraform 中使用 helm_release 资源时遇到问题。

我基本上部署了一个kube-prometheus-stack包含许多k8s资源并且运行顺利的。

当我尝试销毁(或删除)这部分时,问题出现了,因为卸载图表时 Helm 不会删除所有资源(这可能与某些垃圾收集规则有关,这些规则使它们在删除后保持正常运行)。这意味着我最终得到:

  • 图表已卸载
  • 资源仍在运行
  • 必须手动去那里删除所有内容,否则如果我重新创建该内容,我会得到大量重复项

我之前问过一个问题(现在我要结束了),涉及了解这是否是 Helm 的问题(实际上不是,根据设计,它会尽可能删除所有内容,我不确定图表中是否可以做一些事情,但是无论如何,我假设现在不会很快完成)现在我想问是否有人知道如何直接从 Terraform 管理它。

例如,当资源被销毁时,我可以使用某些东西kubectl delete在标记的资源(或者可能是整个命名空间)上运行命令吗?helm_release

注意:我没有添加任何代码,因为这与代码无关,但更多的是寻找一些钩子或黑客仅在销毁后运行清理。

ps:我还尝试在应用后利用 Terraform 云挂钩,但我更愿意根据 Terraform Cloud 来解决这个问题,无论如何,我没有设法创建对是否已被helm_release销毁的依赖关系。

kubernetes terraform kubernetes-helm terraform-cloud terraform-provider-helm

2
推荐指数
1
解决办法
1433
查看次数

如何使用python asyncio从EC2实例调用AWS Lambda函数

我最近发布了一个有关如何仅允许从VPC内的EC2实例调用AWS Lambda函数的问题。通过将带有“ AWS lambda角色”策略的IAM角色附加到EC2实例,我设法使其正常工作,现在我可以使用boto3调用lambda函数。

现在,我想使用asyncio await语法异步调用lambda函数。我读到lambda函数通过设置提供了一个异步版本InvokeType='Event',但是实际上使调用立即返回而没有得到函数的结果。

由于函数需要一些时间,因此我想并行启动许多函数,因此我想避免在等待函数返回时阻塞执行。

我尝试使用aiobotocore,但这仅支持基本的“ s3”服务功能。

解决这个问题的最佳方法(谦虚)是使用AWS API Gateway服务通过GET / POST请求调用lambda函数,该请求可以使用aiohttp轻松处理。

但是,我无法使其正常运行。

我在EC2 IAM角色中添加了策略“ AmazonAPIGatewayInvokeFullAccess”,但每次尝试执行以下操作:

import requests
r = requests.get('https://url_to_api_gateway_for_function')
Run Code Online (Sandbox Code Playgroud)

我得到禁止的回应<Response [403]>

我直接使用lambda函数中的触发器创建了API网关。

我还尝试编辑API网关设置,方法是在函数路径中添加post方法并设置“ AWS_IAM”身份验证,然后将其部署为“ prod”部署。仍然是相同的禁止响应。当我通过“ API网关上的测试屏幕”对其进行测试时,它可以正常工作。

任何想法如何解决这个问题?我错过了一步吗?

amazon-web-services python-3.x python-asyncio boto3 aws-lambda

1
推荐指数
1
解决办法
4950
查看次数