Python 我只想在一个可滚动的文本框上显示函数的结果
当我点击Encrypt时,终端会显示一条加密消息。我只是想在一个可滚动的文本框上显示消息,并能够复制加密消息。我尝试了很多想法,但都做不到 CryptoMD2.pyPython 我只想在一个可滚动的文本框上显示函数的结果,python,android,kivy,kivy-language,kivymd,Python,Android,Kivy,Kivy Language,Kivymd,当我点击Encrypt时,终端会显示一条加密消息。我只是想在一个可滚动的文本框上显示消息,并能够复制加密消息。我尝试了很多想法,但都做不到 CryptoMD2.py from kivymd.app import MDApp from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager from kivy.factory import Factory from kivy.animation import
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager
from kivy.factory import Factory
from kivy.animation import Animation
import string
from kivy.properties import ObjectProperty
from kivy.core.window import Window
from kivymd.uix.label import Label
from kivy.uix.scrollview import ScrollView
Window.size = (360, 600)
alphabet = string.ascii_lowercase
class Encrypt:
def encrypt(self, Text, key):
Text = Text.lower()
key = key
Key = int(key)
encrypted_message = ""
for c in Text:
if c in alphabet:
position = alphabet.find(c)
new_position = (position + Key) % 26
new_character = alphabet[new_position]
encrypted_message += new_character
else:
encrypted_message += c
message = str(encrypted_message)
print(message.upper())
def decrypt(self, Text, key):
Text = Text.lower()
key = key
Key = int(key)
encrypted_message = ""
for c in Text:
if c in alphabet:
position = alphabet.find(c)
new_position = (position - Key) % 26
new_character = alphabet[new_position]
encrypted_message += new_character
else:
encrypted_message += c
message = str(encrypted_message)
print(message.upper())
class CryptoMD(MDApp):
Encrypt = ObjectProperty()
def __init__(self, **kwargs):
self.Encrypt = Encrypt()
self.title = 'Crypto'
self.sm = ScreenManager()
super().__init__(**kwargs)
def animate_card(self, widget):
anim = Animation(pos_hint={"center_y": 0.6}, duration=1)
anim.start(widget)
def animate_background(self, widget):
anim = Animation(size_hint_y=1) + Animation(size_hint_y=0.5, duration=0.5)
anim.start(widget.ids.bx)
def build(self):
self.sm.add_widget(Factory.Main())
return self.sm
if __name__ == '__main__':
CryptoMD().run()
这是cryptomd.kv
#:kivy 1.11.1
#:import rgba kivy.utils.rgba
<Main@Screen>:
name: "cryptomd"
on_enter:
app.animate_card(card)
app.animate_background(background)
BackgroundLayer:
id: background
MDCard:
id:card
orientation: 'vertical'
size_hint: [0.8, 0.7]
pos_hint: {'center_x': 0.5, 'center_y': 0}
padding: [20, 10, 10, 20]
spacing: 7
BoxLayout:
padding: [10, 10, 10, 10]
orientation: 'vertical'
MDLabel:
text: "[color=000000] Caesar Cipher [/color]"
text_size: self.size
font_size: 30
bold: True
markup: True
halign: "center"
valign: "top"
MDTextField:
id: Text
text: "A"
auto_indent: True
allow_copy: True
multiline: False
helper_text: "Enter Text..."
helper_text_mode: "persistent"
required: True
MDTextField:
id: key
text: "1"
input_filter: "int"
helper_text: "Enter Key..."
helper_text_mode: "persistent"
required: True
MDRoundFlatButton:
id: encrypt
text: "Encrypt"
size_hint_x: 0.6
pos_hint: {'center_x': 0.5}
on_press:
app.Encrypt.encrypt(Text.text, key.text) if Text.text != "" else None
MDRoundFlatButton:
id: decrypt
text: "Decrypt"
size_hint_x: 0.6
pos_hint: {'center_x': 0.5}
on_press:
app.Encrypt.decrypt(Text.text, key.text) if Text.text != "" else None
<BackgroundLayer@BoxLayout>:
orientation: 'vertical'
BoxLayout:
id: bx
orientation: 'vertical'
size_hint_y: 0.1
canvas.before:
Color:
rgba: rgba('#8A2BE2')
RoundedRectangle:
pos: self.pos
size: self.size
radius: [0, 0, 40, 40]
BoxLayout:
orientation: 'horizontal'
padding: [10, 10, 10, 30]