- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
也许我跳进了深渊,但我会试一试。
以下是 Tkinter 的一些有用功能:
Tkinter Canvas
小部件是面向对象的绘图 Canvas 。绘图的元素本质上是小部件本身,因为它们可以移动、修改和绑定(bind)到事件。
Tkinter 使用绑定(bind)来触发回调。该事件作为字符串 传递。可以使用 event_generate
轻松创建自定义事件。
Tkinter 有 after
方法,它会等待指定的时间而不卡住 GUI。
Tkinter 有预定义的字体,如 TkDefaultFont
,以及颜色,如 systemButtonFace
,它们依赖于系统。
我的问题是:
这些功能的 pyQt 等价物是什么(尤其是粗体)?
我如何将小部件的元素(例如,仅复选框的标签)“绑定(bind)”到事件?
最佳答案
在 Qt 和 PyQt 中,事件称为信号,您可以使用插槽 (docs here) 绑定(bind)到它们。一般来说,你所做的是用 @
装饰器定义一个插槽。
class WindowImpl (QtGui.QMainWindow, Ui_TremorMain, Ui_Graphs):
def __init__ (self, buffer, parent = None, configuration = None):
# do some initialisation here (not GUI setup however)
@QtCore.pyqtSlot(int, name="on_confSelectorCombo_currentIndexChanged")
def confChanged (self, newConf):
# do some stuff here to handle the event
以上将在名为 confSelectorCombo
的对象的 currentIndexChanged
事件上触发。 confSelectorCombo
的设置是在 GUI 生成器或 Qt Creator
中完成的,诺基亚已决定调用它。这确实是您想要用来开始的东西。有教程here关于使用 Qt Creator。显然,您需要浏览文档并查看哪些小部件发出了哪些信号。
至于字体,我只知道 docs 上的内容:
If you have not set a font for your application then the default font on your
machine will be used, and the default font can be different on different
machines. On Windows the default Windows font is used, on X11 the one in qtrc
can be used. If a default font can’t be found, then a font specified by Qt
will be used.
QStyleSheet
和QStyle
充当更改小部件外观的代理(QStylesheet,QStyle)。
关于让应用程序等待,我找到了this
QTime dieTime = QTime::currentTime().addSecs(2);
while( QTime::currentTime() < dieTime ):
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
还有 QThread.sleep()
( docs ),这取决于你想要什么样的效果。可能还值得在 Qt docs 查看线程支持。
总的来说,在查找有关如何在 PyQt 中执行操作的信息时,我发现查看 Qt 文档然后仅用 Python 编写操作非常有用。 10 次中有 9 次有效。另一方面,可能还值得研究 PySide,它是另一个 python Qt 库。我以前没有用过自己,因为它以前一直在工作中,但我注意到他们已经发布了 1.0.6 版本。
更新只是在下面重申 Luke Woodward,您可以使用 QGraphicsScene
和 QGraphicsView
以面向对象的方式呈现内容。 QGraphicsScene
实际上并不渲染任何东西,它只是一个场景图,QGraphicsView
然后用于渲染场景图的内容。对于低级绘图,还有 QPainter
- 有一个基本的绘图教程 here . QGraphicsItem
也值得一看,它是所有图形项的基础,
includes defining the item's geometry, collision detection, its painting
implementation and item interaction through its event handlers
docs here . Context2D
提供了一个 HTML Canvas (如果我在使用 WebKit 时没有弄错的话)。 Canvas 本身只有一个变化的插槽,但是您放置在 Canvas 上的任何对象都将/可以有更多的插槽。关于 Context2D
和 Context2DCanvas
有一个相当完整的教程 here .关于为什么有这么多不同的渲染方式的解释,你得问问别人。我的两分钱是,这与 Qt 应该在任何地方工作以及 Trolltech 和后来的诺基亚想要提供很多选择这一事实有关。幸运的是,文档非常好。
关于python - 尝试利用 Tkinter 的知识学习 PyQt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311943/
说真的,你怎么能在不发疯的情况下处理所有这些异常呢?我是不是读了太多关于异常处理的文章或什么?我尝试重构了几次,但每次似乎都以更糟糕的结果告终。也许我应该承认确实会发生异常(exception)情况,
背景 两者 try/rescue和 try/catch是 Elixir 中的错误处理技术。根据 corresponding chapter在介绍指南中。 Errors can be rescued u
每当我尝试在 Raspberry PI 上运行此 python 脚本时,我都会遇到问题: import socket import sys # Create a TCP/IP socket sock
我想知道一些关于 PHP 的 try , catch声明。 让我们考虑以下示例。 abstract class ExceptionA extends Exception {} class Except
我的 laravel v5.4 项目中有两个模型,user 和 admin。 在 config/auth.php 中,我向守卫和提供者添加了管理员,如下所示: 'guards' => [ 'w
try: r = requests.get(url, params={'s': thing}) except requests.ConnectionError, e: print e
我有以下代码。 但是,它并不能捕获所有错误,而我仍然会收到“throw er;//未处理的'错误'事件”。 为什么是这样? app.post('/api/properties/zip/:zip/bed
问题与细节 我正在使用自定义错误处理,遇到的错误之一是“路径中的非法字符”。我有一个自定义函数,旨在通过路径字符串查找此类非法字符,并在找到它们时引发自定义错误。但是我发现,取决于非法字符,Test-
This question already has answers here: How do I catch a numpy warning like it's an exception (not j
我正在使用其他人的代码,但我不熟悉try/catch,因此我举了一个类似的小例子。在第11行上,如果我写了error(''),似乎没有发现错误并增加了索引j。但是,编写error(' ')或error
我在我的一个程序中遇到了这个问题,在这种情况下,尝试/异常(exception)的错误使程序变得更好,以防用户意外输入了他们不应该输入的内容。它仍然给我错误,我为为什么感到困惑。如果对我的问题确实很重
我在尝试TRY ... CATCH块时遇到问题。有人可以解释为什么以下代码无法执行我的sp吗? DECLARE @Result int SET @Result = 0 BEGIN TRY SE
我有一个相当大的 powershell 脚本,其中包含许多(20 多个)执行各种操作的函数。 现在所有代码实际上都没有任何错误处理或重试功能。如果某个特定的任务/功能失败,它就会失败并继续。 我想改进
为什么我尝试时需要导入 inputmismatchException catch(InputMismatchException e){ System.out.println("
我对此感到困惑 - 我为辅助方法编写了一个 try/catch 。它的目的是捕获任何无效输入(任何不是“男性”或“女性”的内容(没有特定情况)。如果输入无效,它将通知用户,然后让他们重试。如果有效,则
我有时会发现自己处于如下场景。尽可能简单地陈述问题 “有时我会创建一段代码,Java 让我将其包含在 try/catch 语句中。我没有使用 catch,所以我将其留空。为什么这是错误的?” boo
我有点困惑为什么当我不使用 Try block 时会出现 Try block 错误。 我在代码块底部附近收到错误通知。如果我不使用 try/catch,有人可以向我解释为什么会发生这种情况吗? 它是否
我已经盯着我的电脑两个小时了,我不知道我做错了什么。谁能帮助我看到光明? package blackjack; import java.util.Random; import java.util.Sc
我想将方法保存在 Enum 中,但 Class.getDeclaredMethod 抛出 NoSuchMethodException,那么我该如何处理呢?我的代码: public enum Car
这个问题已经有答案了: Executing multi-line statements in the one-line command-line (18 个回答) 已关闭 3 年前。 如何使用try.
我是一名优秀的程序员,十分优秀!