@golub4ik

Python + Kivy: обновление TextInput, как реализовать?

Делаю менеджер паролей для личного пользования и решил добавить генератор случайного пароля, когда ты нажимаешь на кнопку Сгенерировать Пароль, TextInput с паролем должен автоматически обновляться и принимать в себя сгенерированый пароль. Код:(основная инфа закоментирова)
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout

from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
from kivy.config import Config

import string
from random import *

Config.set("graphics", "resizable", "0")
Config.set("graphics", "width", "700")
Config.set("graphics", "height", "800")

print("--------------")

class PasswordManagerApp(App):

	def open(self, args):
		pass

	def generate(self, args):
		self.password = "".join(choice(self.password_string) for x in range(randint(8, 12))) #генерация пароля
		print(self.password)

	def add(self, args):
		pass	


	def build(self):

		self.password_string = string.ascii_letters + string.digits

		self.resource = ""
		self.login = ""
		self.password = ""

		root = BoxLayout(orientation='vertical', padding = 5)

		top = GridLayout(cols = 6, padding = 5, size_hint = [1, .1])

		top.add_widget(Label(text='Ресурс'))
		top.add_widget(TextInput(text=''))
		top.add_widget(Label(text='Логин'))
		top.add_widget(TextInput(text=''))
		top.add_widget(Label(text='Пароль'))
		top.add_widget(TextInput(text=self.password)) #должно автоматически обновляться при нажатии на кнопку сгенерировать пароль

		root.add_widget(top)

		top_func = GridLayout(cols = 6, padding = 5, size_hint = [1, .1])

		top_func.add_widget(Button(text = 'Открыть файл', on_press = self.open))
		top_func.add_widget(Button(text = 'Сгенерировать пароль', on_press = self.generate)) #вот сама кнопка
		top_func.add_widget(Button(text = 'Добавить аккаунт', on_press = self.add))

		root.add_widget(top_func)


		output = TextInput(size_hint = [1, .8])
		root.add_widget(output)

		return root


if __name__ == '__main__':
	PasswordManagerApp().run()
  • Вопрос задан
  • 1241 просмотр
Решения вопроса 1
@golub4ik Автор вопроса
Решение:
1. Присвоить виджету переменную
self.test = TextInput(text='')
		top.add_widget(self.test)

2. прописать в функцию:
self.test.text = self.password
Эх, намучался я
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы