,首先,对不起我的英语。我的母语是西班牙语。
所以,我正在做这个小项目来学习python。我正在学习如何使用 pyqt5 做 ui。这个应用程序很简单,它有三个输入、一个按钮和一个输出。
我在此应用程序中使用 mvc 软件模式,并且我的视图、模型和控制器位于单独的文件中。,问题:
在控制器类中,我将唯一的按钮连接到名为 (_calculate) 的插槽。当我运行应用程序并按下该按钮时,终端应该打印一条文本,以便我可以查看它是否正常工作。终端没有向我显示任何内容。
尝试不同类型的事情后,我发现如果我在视图类中执行相同的绑定,则会执行 _calculate 。我做了一个关于使用 pyqt5 的计算器的教程。本教程中的计算器使用 mvc 工作得很好,所以我用它来查明我是否忘记或错过了某些内容,但没有出现任何明显的情况。,我的控制器类,我的视图类,我的主要内容,问题是您没有为控制器实例创建持久对象,因此该实例随后会立即被垃圾收集,因为它没有在其他任何地方引用。,只要存在对实例的引用,它就会按预期工作。
在这种情况下,一个局部变量就足够了,因为
app.exec()
将阻止 main
内的进一步处理,确保实例将存在直到它存在。,尽管如此,让我告诉您,虽然从概念上来说使用 mvc 通常是一个好主意,但您应该谨慎使用它,不要“夸大”模式,并且只有在它确实有助于开发时才使用它。,我想指出其中一个mvc 的缺点:,我知道您的示例是一个简单且概念性的示例,但就其用途而言,它确实是一个过于复杂的示例。例如:,您似乎没有使用模型,或者至少您似乎不需要完整的 mvc 模式来做到这一点(只要有实际优势,就应该选择 mvc)这样做,而不是“因为你应该使用它”);使用 mvc 模式并不一定意味着您必须使用 3 个类(和 3 个单独的文件),这也可能会降低代码的可导航性; mvc 主要是关于程序逻辑中这三个元素的划分方式:qt(大多数提供 ui 元素的框架)已经对此有所帮助,因为它提供了除了显示自身之外几乎不执行任何操作的 ui 元素,以及允许交互的其他元素与它们(文件访问、网络接口和实际模型);
过度使用函数来创建 ui 通常是一个坏主意,因为它使事情变得比实际情况复杂得多,最重要的是从可读性的角度来看:虽然使用单独的函数可能有助于为了保持代码“更整洁”,还创建了函数以实现可重用性,并且在
userinterface
类中,有 4 个函数肯定只会使用一次。,