Cracker Jokes as a Service with Python

9640 단어 pythonwebdevchristmas
지역 슈퍼마켓의 크리스마스 크래커는 종종 최악의 농담을 합니다. 우리는 '더 좋은 방법이 있을 거야'라고 말합니다. 이번 크리스마스에 좋아하는 농담을 저장하고 움츠러드는 얼굴의 침묵이 아닌 낄낄거리는 웃음소리를 들어보세요 🤣 .

데이터베이스 기반이고, 웹에 있고, Python에 있습니다... 그리고 Javascript를 한 줄도 작성할 필요가 없었습니다. 예, 우리는 Anvil을 사용했습니다.



캔버스 컴포넌트



앤빌Canvas 구성 요소는 쉬운 마우스 이벤트와 함께 브라우저의 그리기 API에 대한 액세스를 제공하므로 이 앱을 빌드하는 데 완벽한 방법인 것 같습니다.

def draw_background(self):
    img = URLMedia('_/theme/cracker.png')
    c = self.canvas
    m = self.margin
    c.draw_image(img, m, 0, c.get_width() - 2*m, c.get_height())

def canvas_mouse_up(self, x, y, button, **event_args):
    """This method is called when a mouse button is pressed on this component"""
    if (x < self.margin):
        self.idx = (self.idx - 1) % len(self.jokes)
    elif x > self.w - self.margin:
        self.idx = (self.idx + 1) % len(self.jokes)
    self.write_joke()


배터리 포함



AnvilPython in the browser은 Pythonbatteries included의 철학과 함께 좋아하는 Python 라이브러리에서 f-문자열에 이르기까지 제공됩니다.

import itertools
import textwrap
import random


class TellJokes(TellJokesTemplate):

    def __init__(self, **properties):
        self.init_components(**properties)

        self.jokes = list(app_tables.crackers.search())
        self.idx = 0
        self.QorA = itertools.cycle('QA') # switch between Q and A
        self.margin = 80
        self.laughing = '🤣😂😹😆🙈'
        self.text = 'Click To Start Telling Jokes 🎅'

    def write_joke(self, text=None):
        if text is None:
            QorA = next(self.QorA)
            text = f"{QorA}. {self.jokes[self.idx][QorA]}"
            if QorA is 'A':
                text += ' ' + random.choice(self.laughing) # add a random laugh emoji

        # wrap lines for readability
        wrapped_text = textwrap.wrap(text, int(self.canvas.get_width() - 2*self.margin)/35)))
        ...


웃음을 나누다



AnvilData Tables 서비스를 사용하여 데이터베이스를 만든 다음 DataGrid 구성 요소로 UI를 빌드했습니다. 이제 가족에게 앱을 보낼 수 있습니다. 그들이 나보다 더 나은 농담을 생각해 내길 바랍니다 🙄 .



소스 코드 보기



앱으로 직접 플레이하고 싶으신가요? 소스 코드를 확인하십시오.

오픈 소스 코드 >>

좋은 웹페이지 즐겨찾기