问题标签 [pyqt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2500 浏览

python - PyQt 和 PyCairo

我知道可以在 Gtk 绘图区域内放置一个 PyCairo 表面。但我认为 Qt 的使用要好得多,所以我一直想知道是否有办法在某个 Qt 组件中放置 PyCairo 表面?

0 投票
3 回答
3090 浏览

python - PyQt - QScrollBar

亲爱的 Stacktoverflow,你能告诉我一个如何使用 QScrollBar 的例子吗?谢谢。

0 投票
3 回答
2588 浏览

python - Python 的高效图像缩略图控制?

Python GUI 应用程序显示大量缩略图(例如 10000 个或更多)的最佳选择是什么?出于性能原因,此类缩略图控制必须支持虚拟项目,即仅请求用户当前可见的那些缩略图的应用程序。

0 投票
4 回答
30966 浏览

python - PyQt:让小部件在 QDialog 中自动调整大小

当对话框本身调整大小时,我很难让 QDialog 中的小部件自动调整大小。

在以下程序中,如果您调整主窗口的大小,文本区域会自动调整大小。但是,对话框中的文本区域在调整对话框大小时保持相同的大小。

有没有办法让对话框中的文本区域自动调整大小?我尝试setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)在对话框本身和其中的两个小部件上使用,但这似乎没有效果。

如果相关的话,我在 openSuSE 10.2 上使用 Qt 3.3.7 版和 PyQt 3.5.5-29 版。

0 投票
2 回答
8526 浏览

pyqt - Qt:擦除背景(Windows Aero Glass)

更新

有关使用 Qt 和DWM的示例,请参阅在 Windows 上使用模糊替代文字 http://labs.trolltech.com/blogs/wp-content/uploads/2009/09/blurbehind2.png


原始问题:

我想用 Qt 创建一个 Windows Aero Glass 窗口,现在它看起来像这样: 替代文字

但是在调用了一些之后,my_window->repaint()我的窗口标签就坏了: 替代文字

但现在如果我稍微调整窗口大小,它会正确重绘。


问题是:我如何擦除窗口背景,以便小部件将自己绘制在干净的玻璃上?


重现问题的简短代码是(Vista with Aero):

您现在可以单击窗口,也可以单击Alt-Tab几次。

无论如何,使用带有 Aero Glass 的标签不是我需要的,因为 QLabel 不知道如何用一段时间发光(如窗口的标题)来绘制自己。我需要的是一种清洁“玻璃”的通用方法。

0 投票
2 回答
10076 浏览

python - 如何在 Windows 上运行的 PyQt 应用程序中隐藏控制台窗口?

这肯定是可能的吗?我一直在寻找 PyQt 教程和文档,但找不到答案。可能我只需要以不同的方式表达我的搜索查询。

[编辑]

感谢 PEZ 的回答 - 更多详细信息,包括在 Win32 第 20 章 Python 编程.pyw中使用扩展

0 投票
8 回答
44134 浏览

ide - 什么 ide 适合开发 PyQt 应用程序?

什么 ide 适合开发 PyQt 应用程序?

0 投票
1 回答
7654 浏览

python - pyqt导入问题

我在 Python 中执行此操作时遇到了一些麻烦:

我得到的回溯是

我尝试切换导入,稍后在文件中导入 dcopext,但没有任何效果。感谢您的任何建议。

编辑:我已将其缩小到一个问题:我正在使用内部使用 qt3 的 dcopext,但我希望它使用 PyQt4。

0 投票
5 回答
11262 浏览

qt - 如何告诉 QTableWidget 结束编辑单元格?

我正在显示一个弹出菜单来选择 QTableWidget 中的一些值。最低的项目是“修改列表”条目,当我选择它时,应该会自动出现一个新窗口,并且 QComboBox 应该消失并且单元格返回到 Qt::DisplayRole 状态。

现在 Qt 有所有这些不错的 API 调用,比如QTableWidget.edit()and QTableWidget.editItem(),我真正想要的是 a QTableWidget.endEditing(),最好不指定单元格的索引,尽管我可以使用这个调用来获得它:

…但我不知道我是否可以保证当前单元格始终是正在编辑的单元格。

是否有关闭这类编辑器的 API?

弹出菜单

0 投票
6 回答
11054 浏览

python - PyQt:如何在不冻结 GUI 的情况下更新进度?

问题:

  1. 在不锁定 GUI(“无响应”)的情况下跟踪线程进度的最佳做法是什么?
  2. 一般来说,线程在 GUI 开发中的最佳实践是什么?

问题背景:

  • 我有一个适用于 Windows 的 PyQt GUI。
  • 它用于处理 HTML 文档集。
  • 处理一组文档需要三秒到三个小​​时不等。
  • 我希望能够同时处理多个集合。
  • 我不希望 GUI 锁定。
  • 我正在寻找线程模块来实现这一点。
  • 我对线程比较陌生。
  • GUI 有一个进度条。
  • 我希望它显示所选线程的进度。
  • 如果已完成,则显示所选线程的结果。
  • 我正在使用 Python 2.5。

我的想法:让线程在更新进度时发出 QtSignal 触发一些更新进度条的功能。完成处理时也会发出信号,以便显示结果。

对此方法的任何评论(例如缺点、陷阱、赞美等)都将受到赞赏。

解析度:

我最终使用 QThread 类和相关的信号和插槽在线程之间进行通信。这主要是因为我的程序已经将 Qt/PyQt4 用于 GUI 对象/小部件。该解决方案还需要对我现有的代码进行较少的更改来实现。

这是一篇适用的 Qt 文章的链接,该文章解释了 Qt 如何处理线程和信号,http://www.linuxjournal.com/article/9602。摘录如下:

幸运的是,Qt 允许跨线程连接信号和槽——只要线程运行它们自己的事件循环。与发送和接收事件相比,这是一种更简洁的通信方法,因为它避免了所有重要的应用程序中都需要的所有簿记和中间 QEvent 派生类。线程之间的通信现在变成了将信号从一个线程连接到另一个线程的槽的问题,线程之间交换数据的互斥和线程安全问题由 Qt 处理。

为什么有必要在要连接信号的每个线程中运行一个事件循环?原因与 Qt 在将信号从一个线程连接到另一个线程的插槽时使用的线程间通信机制有关。当建立这样的连接时,它被称为排队连接。当信号通过排队连接发出时,下一次执行目标对象的事件循环时调用插槽。如果槽被另一个线程的信号直接调用,则该槽将在与调用线程相同的上下文中执行。通常,这不是您想要的(尤其是如果您使用数据库连接,则不是您想要的,因为数据库连接只能由创建它的线程使用)。排队的连接将信号正确地分派给线程对象,并通过搭载事件系统在其自己的上下文中调用其槽。这正是我们想要的线程间通信,其中一些线程正在处理数据库连接。Qt 信号/槽机制在根本上是上述线程间事件传递方案的实现,但具有更清洁和更易于使用的接口。

注意: eliben也有一个很好的答案,如果我不使用处理线程安全和互斥的 PyQt4,他的解决方案将是我的选择。