【发布时间】:2020-10-02 00:42:45
【问题描述】:
我是 Python UI 编程的新手。我想构建一个 GUI,当您输入一个字母时,您将获得 code 以使用星形图案或任何其他字符图案打印该字母。我将所有字母的模式代码的代码存储在一个单独的文本文件中,如 a.txt、b.txt 等。 我还为一些特殊字符(如爱情符号或蛋糕)编写了代码。但现在,我正在努力显示字母的模式代码。 我必须读取用户输入的“m”,然后从 m.txt 文件中读取文本。我现在要做的就是使用标签标签在 GUI 上显示这些内容。我的代码不会在屏幕上打印任何内容。
请有人可以为我腾出时间并查看我的代码。 提前致谢
这是我的 Python 文件
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.popup import Popup
def show_popup():
show = P()
popupWindow = Popup(title = "Error",content = show,size_hint = (None,None),size =(400,400))
popupWindow.open()
class P(FloatLayout):
pass
class Code(Screen):
def display(self,char):
try:
with open("{}.txt".format(char),"r") as f:
contents = f.read()
# I am sure that the contents are read properly
# bcoz I printed them on IDLE and it worked
main_label = Label()
main_label.txt = contents
except:
show_popup()#if it is an invalid letter like(@,*,&)
class SecondPage(Screen):
#SecondPage asks the user to enter a letter
letter = ObjectProperty(None)
def Enter(self):
#this method checks whether the user entered a valid letter or not
if len(self.letter.text)==1:
char = self.letter.text
char = char.lower()
c = Code()
c.display(char)#passing this character display method
else:
show_popup()
class MainPage(Screen):
#Main Page has two buttons asking the user whether
#he want code for special character or a letter
pass
class WindowManager(ScreenManager):
pass
class Sowmya(App):
def build(self):
return WindowManager()
if __name__ == "__main__":
Sowmya().run()
这是我的 .kv 文件
<P>:
Label:
text:"Please enter a valid letter"
size_hint:0.6,0.2
pos_hint:{"x":0.2,"top":1}
<WindowManager>:
MainPage:
SecondPage:
Code:
<MainPage>:
name:"main"
Button:
text: 'Letters'
pos_hint : {'x':.4,'y':.2,'left':.3}
on_release:
app.root.current = "second"
root.manager.transition.direction = "left"
font_size: 20
background_color: (1, 1, 1, 1)
color: (1, 1, 1, 1)
size_hint:.4,.3
Button:
text: 'Special'
pos_hint : {'x':.4,'y':.5,'left':.3}
font_size: 20
background_color: (1, 1, 1, 1)
color: (1, 1, 1, 1)
size_hint:.4,.3
<SecondPage>:
letter:letter
name:"second"
GridLayout:
cols:1
GridLayout:
cols:2
Label:
text:"Enter Letter:"
TextInput:
id:letter
multiline:False
Button:
text : "Enter"
on_release:
root.Enter()
app.root.current = "code"
Button:
text:"Go Back"
on_release:
app.root.current = "main"
root.manager.transition.direction = "right"
<Code>:
name:"code"
Label:
size_hint:0.6,0.2
pos_hint:{"x":0.2,"top":1}
【问题讨论】:
标签: python kivy kivy-language