【发布时间】:2023-03-26 06:48:01
【问题描述】:
我认为这更像是一个 python 问题而不是一个 kivy 问题。
class Keyboard 正在共享来自类 GUI 的方法。我创建了一个名为self.a 的GUI 实例来连接class Keyboard 中的两个类。另外,我在class MainApp 中创建了一个键盘类实例self.key。
当我使用这种方法时,print ("Return button is pressed")“返回”按钮能够执行打印语句。我明白它为什么有效。当我在方法中使用self.a.up() 时,返回按钮不会从class GUI 调用up() 方法。这可能是我遗漏的一个小细节或一个概念。这不是程序其余部分的错误。请提前帮助和感谢。代码:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.lang.builder import Builder
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.modules import keybinding
from kivy.core.window import Window
class GUI(BoxLayout):
main_display = ObjectProperty()
text_input = ObjectProperty()
def plus_1(self):
self.value = int(self.main_display.text)
self.main_display.text = str(self.value + 1)
print (self.main_display.text)
def minus_1(self):
self.value = int(self.main_display.text)
self.main_display.text = str(self.value - 1)
def up(self):
self.main_display.text = self.text_input.text
self.text_input.text = ''
class Keyboard(Widget):
def __init__(self,):
super().__init__()
self.a = GUI()
self.keyboard = Window.request_keyboard(None, self)
self.keyboard.bind(on_key_down=self.on_keyboard_down)
def on_keyboard_down(self, keyboard, keycode, text, modifiers):
if keycode[1] == 'enter':
self.a.up()
# print ("Return button is pressed")
return True
class MainApp(App):
def build(self):
key = Keyboard()
return GUI()
if __name__=="__main__":
app = MainApp()
app.run()
【问题讨论】:
标签: python-3.x function class button kivy