标签: pyqt

Qt在setVisible,setShown和show/hide之间的区别是什么

请原谅这个潜在的noobish问题但是当试图隐藏QWidget时,调用setVisible(False),setShown(False)和hide()之间的区别是什么?

qt pyqt show hide visible

21
推荐指数
2
解决办法
2万
查看次数

Qt:擦除背景(Windows Aero Glass)

更新

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


原始问题:

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

但在调用一些my_window->repaint()我的窗口后,标签就会破碎: 替代文字

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


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


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

class Window(QWidget):
    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setLayout(QVBoxLayout())
        self.layout().addWidget(QLabel("This is the text"))

        # let the whole window be a glass
        self.setAttribute(Qt.WA_NoSystemBackground)
        from ctypes import windll, c_int, byref
        windll.dwmapi.DwmExtendFrameIntoClientArea(c_int(self.winId()), byref(c_int(-1)))
    def mousePressEvent(self, event):
        self.repaint()
Run Code Online (Sandbox Code Playgroud)

您可以立即单击该窗口,也可以单击Alt-Tab几次.

无论如何,使用带有Aero Glass的标签并不是我所需要的,因为QLabel不知道如何用一缕光线(如窗口的标题)来绘制自己.我需要的是清洁"玻璃"的一般方法.

pyqt dwm windows-vista aero-glass

20
推荐指数
1
解决办法
8002
查看次数

如何检查按键修改器是否被按下(shift,ctrl,alt)?

我正在使用QT设计器构建UI,并希望按钮使用不同的修改器执行不同的操作.所以我认为我可以使用动态字符串属性来调用函数,这些属性将根据修饰符执行操作.

如果有人知道更简单的方法,我会非常感激.

python pyqt pyqt4 modifier-key pyqt5

20
推荐指数
2
解决办法
3万
查看次数

PySide/PyQt检测用户是否试图关闭窗口

有没有办法检测用户是否试图关闭窗口?例如,在Tkinter中我们可以这样做:

def exit_dialog():
    #do stuff
    pass

root = Tk()
root.protocol("WM_DELETE_WINDOW", exit_dialog)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

谢谢.

python tkinter pyqt pyqt4 pyside

20
推荐指数
2
解决办法
4万
查看次数

需要好的PyQt教程

我开始进入PyQt.因此我需要一些很好的教程.我搜索了一下,但没有找到任何好处.大多数教程只发布"完整"应用程序,但没有详细说明.

你能告诉我一些吗?

目前正在编程中Notepad++.与PyQt结合使用python时,是否有更好的轻量级编辑器或简单的IDE?

python user-interface pyqt

20
推荐指数
2
解决办法
3万
查看次数

PyQt:如何将Combobox设置为Item知道Item的文本(标题)

是否可以将Combobox设置为知道Item的文本值的项目.我试图避免循环for i in range(myCombobox.count())只是为了找到一个Item的索引,所以它可以用来设置一个组合框到该项的索引.

python pyqt pyqt4 qcombobox pyqt5

20
推荐指数
1
解决办法
4万
查看次数

如何在不冻结PyQt GUI的情况下跟踪Python中的线程进度?

问题:

  1. 在不锁定GUI的情况下跟踪踏板进度的最佳实践是什么("无响应")?
  2. 一般来说,适用于GUI开发的线程最佳实践是什么?

问题背景:

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

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

#NOTE: this is example code for my idea, you do not have
#      to read this to answer the question(s).

import threading
from PyQt4 import QtCore, QtGui
import re
import copy

class ProcessingThread(threading.Thread, QtCore.QObject):

    __pyqtSignals__ = ( "progressUpdated(str)",
                        "resultsReady(str)")

    def __init__(self, docs):
        self.docs = docs
        self.progress = 0   #int between 0 and 100
        self.results = []
        threading.Thread.__init__(self)

    def getResults(self):
        return copy.deepcopy(self.results) …
Run Code Online (Sandbox Code Playgroud)

python user-interface multithreading pyqt

19
推荐指数
2
解决办法
9935
查看次数

获取QTabWidget中的所有选项卡小部件

是否有可能在列表addTab(QWidget()获取QTabWidget中添加的所有选项卡小部件.

我们可以使用self.findChildren(QWidget),但它也返回其自身内的所有其他小部件,并且无法过滤它们.

qt pyqt qtabwidget

19
推荐指数
1
解决办法
2万
查看次数

在MultiThreaded PyQT中更新GUI元素

我正在研究一段时间来查找如何使用PyQT执行多线程程序的信息,更新GUI以显示结果.

我习惯于通过示例学习,我找不到(是的,我正在寻找几周)任何使用多线程执行如此简单任务的程序的简单示例,例如连接到www站点列表(5个线程)并且只是打印已处理带响应代码的网址.

任何人都可以共享代码或发送给我解释这样的程序的好教程吗?

python multithreading pyqt

19
推荐指数
1
解决办法
3万
查看次数

如何使用Python和PyQt对我的GUI程序进行单元测试?

我听说单元测试是保持代码正常工作的好方法.

单元测试通常会对函数进行简单输入,并检查其简单输出.但是我该如何测试用户界面呢?

我的程序是用PyQt编写的.我应该选择PyUnit,还是Qt的内置QTest?

python qt unit-testing pyqt

19
推荐指数
2
解决办法
7628
查看次数