gpt4 book ai didi

python - 尝试利用 Tkinter 的知识学习 PyQt

转载 作者:太空狗 更新时间:2023-10-30 00:18:10 25 4
gpt4 key购买 nike

也许我跳进了深渊,但我会试一试。

以下是 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.

QStyleSheetQStyle 充当更改小部件外观的代理(QStylesheetQStyle)。

关于让应用程序等待,我找到了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,您可以使用 QGraphicsSceneQGraphicsView 以面向对象的方式呈现内容。 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 上的任何对象都将/可以有更多的插槽。关于 Context2DContext2DCanvas 有一个相当完整的教程 here .关于为什么有这么多不同的渲染方式的解释,你得问问别人。我的两分钱是,这与 Qt 应该在任何地方工作以及 Trolltech 和后来的诺基亚想要提供很多选择这一事实有关。幸运的是,文档非常好。

关于python - 尝试利用 Tkinter 的知识学习 PyQt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com