请原谅这个潜在的noobish问题但是当试图隐藏QWidget时,调用setVisible(False),setShown(False)和hide()之间的区别是什么?
有关使用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不知道如何用一缕光线(如窗口的标题)来绘制自己.我需要的是清洁"玻璃"的一般方法.
我正在使用QT设计器构建UI,并希望按钮使用不同的修改器执行不同的操作.所以我认为我可以使用动态字符串属性来调用函数,这些属性将根据修饰符执行操作.
如果有人知道更简单的方法,我会非常感激.
有没有办法检测用户是否试图关闭窗口?例如,在Tkinter中我们可以这样做:
def exit_dialog():
#do stuff
pass
root = Tk()
root.protocol("WM_DELETE_WINDOW", exit_dialog)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
谢谢.
我开始进入PyQt
.因此我需要一些很好的教程.我搜索了一下,但没有找到任何好处.大多数教程只发布"完整"应用程序,但没有详细说明.
你能告诉我一些吗?
目前正在编程中Notepad++
.与PyQt结合使用python时,是否有更好的轻量级编辑器或简单的IDE?
是否可以将Combobox设置为知道Item的文本值的项目.我试图避免循环for i in range(myCombobox.count())
只是为了找到一个Item的索引,所以它可以用来设置一个组合框到该项的索引.
我的想法:让线程在更新进度时发出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) 是否有可能在列表addTab(QWidget()
中获取QTabWidget中添加的所有选项卡小部件.
我们可以使用self.findChildren(QWidget)
,但它也返回其自身内的所有其他小部件,并且无法过滤它们.
我正在研究一段时间来查找如何使用PyQT执行多线程程序的信息,更新GUI以显示结果.
我习惯于通过示例学习,我找不到(是的,我正在寻找几周)任何使用多线程执行如此简单任务的程序的简单示例,例如连接到www站点列表(5个线程)并且只是打印已处理带响应代码的网址.
任何人都可以共享代码或发送给我解释这样的程序的好教程吗?
我听说单元测试是保持代码正常工作的好方法.
单元测试通常会对函数进行简单输入,并检查其简单输出.但是我该如何测试用户界面呢?
我的程序是用PyQt编写的.我应该选择PyUnit,还是Qt的内置QTest?
pyqt ×10
python ×7
pyqt4 ×3
qt ×3
pyqt5 ×2
aero-glass ×1
dwm ×1
hide ×1
modifier-key ×1
pyside ×1
qcombobox ×1
qtabwidget ×1
show ×1
tkinter ×1
unit-testing ×1
visible ×1