gpt4 book ai didi

python - 如何确定要导入的内容,例如与 QTreeWidget.findItems 一起使用的 matchFlags?

转载 作者:行者123 更新时间:2023-12-01 08:08:42 27 4
gpt4 key购买 nike

我正在尝试使用函数 QTreeWidget.findItems 来查找完全匹配的项(该项目名为“Things”)我看到一个使用这个... Qt.MatchExactly ... 作为“匹配标志”的示例。即使我从 PyQt5 导入了 Qt 模块,也找不到 MatchExactly。我通过导入 PyQt5 中 QtCore 中找到的另一个 Qt 模块来使其工作。但这是经过几天的数小时的探索、猜测和阅读 stackOverFlow 帖子之后的结果。

我的问题是 - 如何知道哪个模块包含(因此必须导入)我需要的东西?我怎么知道 Qt.MatchExactly 位于 PyQt5.QtCore.Qt 模块中(而不是位于 PyQt5.Qt 模块中)?

这是我的代码:请注意,它读取 QtDesigner .ui 文件,因此它不会为您工作。但让你运行这段代码并不是重点。

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import QMainWindow, QApplication, QTreeWidgetItem
from PyQt5 import uic, QtWidgets, Qt #<<flags are not here
from PyQt5 import QtCore

from PyQt5.QtCore import Qt #<<<this is where i found the match flag "MatchExactly"

qtCreatorFile = "Main2.ui" # Enter qt Designer file here.
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)

class MyApp(QMainWindow):
def __init__(self):
super(MyApp, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)

self.InitModelContentTree()

def InitModelContentTree (self):
modelContentTree = self.ui.ModelContentTree
ThingsItemList = modelContentTree.findItems("Things", Qt.MatchExactly)
ThingsItem = ThingsItemList[0]
QTreeWidgetItem(ThingsItem, ["New Thing"])
print("pause")


if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())

我希望有一个解码器环,一些我缺少的基本东西。事实证明我是一个非常糟糕、非常低效的猜测者。

最佳答案

实际上 Qt.MatchExactly 位于 Qt 中,但您必须以其他方式导入它:

from PyQt5 import Qt

# ...

ThingsItemList = modelContentTree.findItems("Things", Qt.Qt.MatchExactly)

TL;博士

Qt 子模块是一个假模块,允许访问任何模块(例如别名),例如它类似于:

from PyQt5 import QtCore as Qt
from PyQt5 import QtGui as Qt
from PyQt5 import QtWidgets as Qt
# ...
# The same for all submodules

例如,可以检查 Qt.MatchExactly:

from PyQt5 import Qt, QtCore

assert(QtCore.Qt.MatchExactly == Qt.Qt.MatchExactly)

所以一般来说以下导入:

from PyQt5 import somemodule

somemodule.someclass

它相当于:

from PyQt5 import Qt

Qt.someclass

如何知道一个类属于哪个子模块?:好吧,如果您有一个可以像 pycharm 这样进行 self 报告的 IDE,那么任务很简单,因为 IDE 本身就可以完成此任务。但如果我无法访问 IDE,另一个选择是使用 Qt 的文档,例如 Qt::MatchExactly 的文档位于此链接中,第一部分如下表:

enter image description here

并观察 Qt += core ,因此该文档的所有元素都属于 Qt 的核心子模块,在 PyQt/PySide 中对应于 QtCore (一般来说,如果 Qt 的文档在 PyQt/PySide 中的 Qt += mymodule 中指示 QtMyModule )。 C++的Qt::MatchExactly对应python中的Qt.MatchExactly。所以总而言之你应该使用:

from PyQt5 import QtCore

QtCore.Qt.MatchExactly

关于python - 如何确定要导入的内容,例如与 QTreeWidget.findItems 一起使用的 matchFlags?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55401944/

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