Я конечно никогда не использовал kivy, но вопрос достаточно лёгкий)
Но, могу предложить вам изменить код как-нибудь так:
КОД
from kivy.app import App
from kivy.uix.textinput import TextInput
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.config import Config
from random import choice
Config.set('graphics', 'resizable', '1')
Config.set('graphics', 'width', '350')
Config.set('graphics', 'height', '150')
class PassGenApp(App):
txt1 = TextInput()
txt2 = TextInput()
chars = '+-/*!&$#?=@<>%^:;""_~()abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
def generate(self):
print(["".join([choice(self.chars) for i in range(int(self.txt2.text))]) for passcount in range(int(self.txt1.text))])
def build(self, **kwargs):
bl = BoxLayout(orientation='vertical')
gl = GridLayout(cols=2)
bl.add_widget(Label(text=''))
gl.add_widget(Label(text='PassNum:'))
gl.add_widget(self.txt1)
gl.add_widget(Label(text='PassLength:'))
gl.add_widget(self.txt2)
gl.add_widget(Button(text='Generate'))
gl.add_widget(bl)
return gl
if __name__ =='__main__':
PassGenApp().run()
Думаю как-то так это должно быть, хоть это и не идеальный вариант и со стороны правильности написания кода, лучше закрыть глаза и не смотреть, но думаю он будет работать.
Если ответ устраивает, отметьте ответ решением.