我有一个QWidget,里面有一个QTableView.我需要在表的第一列有一个查找功能,所以当我点击Ctrl + F时,会弹出一个查找对话框.
class Widget(QWidget):
def __init__(self,md,parent=None):
QWidget.__init__(self,parent)
layout=QVBoxLayout(self)
# initially construct the visible table
tv = QTableView()
# uncomment this if the last column shall cover the rest
tv.horizontalHeader().setStretchLastSection(True)
tv.show()
# set black grid lines
self.setStyleSheet("gridline-color: rgb(39, 42, 49)")
# construct the Qt model belonging to the visible table
model = NvmQtModel(md)
tv.setModel(model)
tv.resizeRowsToContents()
tv.resizeColumnsToContents()
# set the shortcut ctrl+F for find in menu
shortcut = QShortcut(QKeySequence('Ctrl+f'), self)
shortcut.activated.connect(self.handleFind)
# delegate for decimal
delegate = NvmDelegate()
tv.setItemDelegate(delegate)
self.setGeometry(200,200,600,600) # …Run Code Online (Sandbox Code Playgroud) 我试图在运行时通过按下按钮来添加新的小部件(在下面的示例中我使用标签)。这里是例子:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Widget(QWidget):
def __init__(self, parent= None):
super(Widget, self).__init__()
btn_new = QPushButton("Append new label")
self.connect(btn_new, SIGNAL('clicked()'), self.add_new_label)
#Container Widget
self.widget = QWidget()
#Layout of Container Widget
layout = QVBoxLayout(self)
for _ in range(20):
label = QLabel("test")
layout.addWidget(label)
self.widget.setLayout(layout)
#Scroll Area Properties
scroll = QScrollArea()
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scroll.setWidgetResizable(False)
scroll.setWidget(self.widget)
#Scroll Area Layer add
vLayout = QVBoxLayout(self)
vLayout.addWidget(btn_new)
vLayout.addWidget(scroll)
self.setLayout(vLayout)
def add_new_label(self):
label = QLabel("new")
self.widget.layout().addWidget(label)
if __name__ == '__main__':
app = …Run Code Online (Sandbox Code Playgroud) 我正在研究python项目,我的.py文件存在问题,该文件符合.qrc文件.首先,让我简要介绍一下我的项目.
我在QtDesigner中创建了我的项目GUI,并且还使用了GUI中的图像.然后,我使用pyside-uic从.ui文件生成.py,并使用pyside-rcc从.qrc文件生成.py文件.问题是当我使用.py文件(图像文件)时,图像不会显示在我的GUI中.
有谁知道如何解决这个问题?
谢谢你的所有答案.:)
PS.我使用PySide作为我的GUI语言.
我想知道与QThread相比,从QObject中的常规python线程发出信号会产生什么后果.
请参阅以下课程:
class MyObject(QtCore.QObject):
def __init__(self):
super().__init__()
sig = pyqtSignal()
def start(self):
self._thread = Thread(target=self.run)
self._thread.start()
def run(self):
self.sig.emit()
# Do something
Run Code Online (Sandbox Code Playgroud)
现在,假设在GUI线程中,我有:
def __init__(self):
self.obj = MyObject()
self.obj.sig.connect(self.slot)
self.obj.start()
def slot(self):
# Do something
Run Code Online (Sandbox Code Playgroud)
在slot当所述信号被发射确实执行.但是,我想知道该slot方法将在哪个线程中执行?如果我使用QThread而不是python线程,它会有什么不同MyObject吗?
我正在使用PyQt5和Python 3.
首先,我按照以下步骤安装QScintilla:
1:
cd Qt4Qt5
qmake qscintilla.pro
sudo make
make install
Run Code Online (Sandbox Code Playgroud)
2:
cd ../designer-Qt4Qt5
qmake designer.pro
sudo make
sudo make install
Run Code Online (Sandbox Code Playgroud)
3:
cd ../Python
python3 configure.py --pyqt=PyQt5
sudo make
Run Code Online (Sandbox Code Playgroud)
在这里我遇到了问题:
QAbstractScrollArea: No such file or directory
Run Code Online (Sandbox Code Playgroud)
和问题:
qprinter.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但我终于通过手动添加所需文件解决了这些问题.
继续:
sudo make install
Run Code Online (Sandbox Code Playgroud)
4:
然后我输入以下命令安装eric6:
sudo python3 install.py
Run Code Online (Sandbox Code Playgroud)
但我得到了:
检查依赖项
Python版本:3.4.0
找到PyQt5
对不起,请安装QScintilla2及其PyQt5/PyQt4包装器.
错误:/usr/lib/python3/dist-packages/PyQt5/Qsci.so:未定义符号:_ZTI13QsciScintilla
我从Qt4升级到Qt5(PyQt,具体而言)和QWheelEvent为我打破 - 它返回空pixelDelta(),但阶段是2(默认).我在Win 7上,所以关于阶段的警告不适用于我.当我运行此代码时:
from PyQt5 import QtWidgets
class Q(QtWidgets.QLabel):
def wheelEvent(self, event):
print(event.pixelDelta())
app = QtWidgets.QApplication([])
w = Q()
w.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
滚动打印'没有坐标的PyQt5.QtCore.QPoint()'.我能做什么?
我使用python 3.4,pyQt5和Qt设计器(Winpython发行版).我喜欢由设计师制作guis并使用setupUi在python中导入它们的想法.我可以显示MainWindows和QDialogs.但是,现在我想设置我的MainWindow,总是在顶部,只有关闭按钮.我知道这可以通过设置Windows标志来完成.我尝试做如下:
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
class MainWindow(QtWidgets.QMainWindow,Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint | QtCore.Qt.WindowMinimizeButtonHint)
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
form = MainWindow()
form.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
MainWindow显示(没有错误)但不应用Flags.我想这是因为我要求在已经创建后更改Windows属性.现在,问题是:我怎么能直接修改Ui_MainWindow呢?可以在Qt设计器中更改标志吗?谢谢
简短版本:我如何让PyQt4的configure.py使用Virtual Env中安装的SIP版本?
长版本:我知道这个问题的变化在这里被问过一百万次,但我似乎无法找到答案.我正在尝试在虚拟环境(VE)中安装SIP和PyQt4.我无法将其安装到主系统,因为它是一台工作计算机.我们有一个旧版本的PyQt所以我不能只是从网站包复制.
我在我的VE中安装了SIP(configure.py --incdir,make,make install)但是当我在PyQt4上运行configure时,我得到错误:错误:此版本的PyQt需要SIP v4.19.0或更高版本.我安装了4.19.2版.当运行sipconfig时,它告诉我它仍在使用系统版本,即使激活了VE.如何告诉configure.py PyQt使用VE中安装的软件包?
谢谢大家!
编辑:从它的外观来看,似乎我的VE没有从正确的位置拉蟒蛇库,即使VE被激活.我添加了一行来激活将site-packages和bin dirs的路径和site-packages附加到pythonpath而没有成功.它仍然没有找到正确的库.
是否有可能在需要时在运行时创建信号?
我在一个函数中做这样的事情:
class WSBaseConnector(QObject)
def __init__(self) -> None:
super(QObject, self).__init__()
self._orderBookListeners: Dict[str, pyqtSignal[OrderBookData]] = {}
def registerOrderBookListener(self, market: str, listener: Callable[[OrderBookData], None], loop: AbstractEventLoop) -> None:
try:
signal = self._orderBookListeners[market]
except KeyError:
signal = pyqtSignal(OrderBookData)
signal.connect(listener)
self._orderBookListeners[market] = signal
else:
signal.connect(listener)
Run Code Online (Sandbox Code Playgroud)
如您所见,我有一个存储 str、pyqtSignal 对的字典。当我尝试将信号连接到侦听器时,出现错误:
'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect'
Run Code Online (Sandbox Code Playgroud)
在没有类变量的情况下,是否无法在运行时创建 pyqtSignals?
干杯。
我想用来在当前工作目录中pathlib.glob()查找具有特定名称模式 ( ) 的目录。*data我不想明确检查 via.isdir()或其他东西。
这是相关列表,其中三个文件夹作为预期结果,一个文件具有相同的模式,但它应该是结果的一部分。
ls -ld *data
drwxr-xr-x 2 user user 4,0K 9. Sep 10:22 2021-02-11_68923_data/
drwxr-xr-x 2 user user 4,0K 9. Sep 10:22 2021-04-03_38923_data/
drwxr-xr-x 2 user user 4,0K 9. Sep 10:22 2022-01-03_38923_data/
-rw-r--r-- 1 user user 0 9. Sep 10:24 2011-12-43_3423_data
Run Code Online (Sandbox Code Playgroud)
[
'2021-02-11_68923_data/',
'2021-04-03_38923_data/',
'2022-01-03_38923_data/'
]
Run Code Online (Sandbox Code Playgroud)
from pathlib import Path
cwd = Path.cwd()
result = cwd.glob('*_data/')
result = list(result)
Run Code Online (Sandbox Code Playgroud)
这给了我 3 个文件夹和文件。
还尝试了变体cwd.glob('**/*_data/')。
python ×7
pyqt ×5
pyqt5 ×5
python-3.x ×2
qt ×2
qt-designer ×2
compilation ×1
directory ×1
events ×1
flags ×1
glob ×1
image ×1
linux ×1
mousewheel ×1
pathlib ×1
pyqt4 ×1
pyside ×1
python-sip ×1
qlabel ×1
qmainwindow ×1
qscintilla ×1
qscrollarea ×1
qt5 ×1
qtableview ×1
rcc ×1
resize ×1
runtime ×1
search ×1
virtualenv ×1