Как получить ввод текста как функцию на киве? - PullRequest
0 голосов
/ 28 мая 2019

Я не уверен, как подойти к описанному ниже с точки зрения киви.Вместо использования командной строки для получения входных значений я хочу использовать kivy для получения входных значений.Я был бы признателен, если бы вы могли помочь мне с этим.Например, первая строка задает вопрос пользователю.Пользователь отвечает на него, и эта информация переходит в переменную, которую я могу использовать для манипуляции.

    def coord(d):
        while True:
            deforchan = input('Use default(d) coordinates or change(c) in page %s: ' %d)
            if deforchan == 'd':
                x1, y1, x2, y2 = '700','800','1140','200'
                i = table_foo(x1, y1, x2, y2,d)
                break
            elif deforchan == 'c':
                print('Enter (0,0) coordinate: ')
                x1, y1 = input('x_coordinate: '), input('y_coordinate: ')
                print('Enter (0,0) coordinate:')
                x2, y2 = input('x_coordinate: '), input('y_coordinate: ')
                x1 = str(x1)
                y1 = str(850-int(y1))
                x2 = str(x2)
                y2 = str(850-int(y2))
                print(x1, y1, x2, y2,d)
                i = table_foo(x1, y1, x2, y2,d)
                break
            else:
                print('Oops! Try Again')

        return x1, y1, x2, y2, d

    def final():
    #     pdfname = 'example2.pdf'
    #     nofpages = len(PdfReader(pdfname).pages)
        for d in range(1, int(nofpages)+1):
            x1, y1, x2, y2, d = coord(d)

            while True:
                add_tables = input('Any additional tables in page %s? (y or n) ' %d)
                if add_tables == 'y':
                    x1, y1, x2, y2, d = coord(d)
                elif add_tables == 'n':
                    break
                else:
                    print('Oops! Try Again')

1 Ответ

0 голосов
/ 28 мая 2019

Используйте виджеты Kivy, такие как BoxLayout , GridLayout , Метка , TextInput и Кнопка для отображенияЗначения по умолчанию и подождите, пока они не переопределят значения по умолчанию или не введут новые значения.

main.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder


Builder.load_string("""
<Demo>:
    orientation: 'vertical'

    GridLayout:
        cols: 3
        Label:
            text: 'Enter (0,0) coordinate:'
        TextInput:
            id: x1
            hint_text: 'x1 coordinate'
            text: '700'
        TextInput:
            id: y1
            hint_text: 'y1 coordinate'
            text: '800'
        Label:
            text: 'Enter (0,0) coordinate:'
        TextInput:
            id: x2
            hint_text: 'x2 coordinate'
            text: '1140'
        TextInput:
            id: y2
            hint_text: 'y2 coordinate'
            text: '200'

    Button:
        text: 'Submit'
        on_release: app.root.coordinates(x1.text, y1.text, x2.text, y2.text)

""")


class Demo(BoxLayout):

    def coordinates(self, x1, y1, x2, y2):
        print(f"x1={x1}, y1={y1}, x2={x2}, y2={y2}")


class TestApp(App):

    def build(self):
        return Demo()


if __name__ == "__main__":
    TestApp().run()

Выход

Result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...