python - 从控制器类而不是 GUI 类访问 tkinter 键盘输入
问题描述
我正在尝试创建一个由控制器类和 GUI 类组成的 GUI 程序。使用 tkinter,我有一个键绑定设置来检查 wasd 输入。我需要将此键盘输入输入到我的控制器类中,以便我可以控制程序的功能。
下面是我的代码的粗略结构。
class gui(tkinter.Canvas) :
def __init__(self) :
self.bind_all("<Key>", self.keypress)
def keypress(self, key) :
event = key.char
class controller(object) :
def __init__(self) :
gui = gui()
def control(self) :
# code to use gui event input to control program.
这段代码可能不起作用,我不想使用它。这只是为了显示我的应用程序的结构以及我需要从控制器类中的控制方法访问 tkinter 画布键盘输入。
解决方案
您需要创建控制器实例,然后将该实例传递给 GUI。
c = controller()
g = gui(controller)
您应该在其中gui
保存对 的引用controller
,您可以从中访问控制器中的方法。
class gui(tkinter.Canvas):
def __init__(self, controller):
self.controller = controller
...
def keypress(self, key):
...
self.controller.control()
推荐阅读
- python - 你可以在 python 中同时使用相对和绝对导入吗?
- html - 有没有办法重命名文件并将其上传到所有其他调用它的文件中?
- excel - 使用 excel VBA 获取 Outlook 电子邮件项目,按日期限制
- typescript - 打字稿索引类型和长度验证
- c# - c# asp.net core register 嵌套泛型类
- asp.net - Asp.Net中Data Pager控件的本地化
- html - 两个动态创建的表中行的相等高度,使用JQuery
- azure - 通过在 Azure AD 条件访问策略中配置登录频率来延长应用程序会话令牌时间不起作用
- python - Pandas iloc 返回单元格索引而不是值
- android - XML 从另一个 XML 文件中获取值