如何解决在 PyQt5 中的两个 QListWidgets 之间拖放文本时无法立即调用方法
我有两个并排的 Python QtListWidgets。左侧列表小部件包含文件名。右侧列表小部件为空白。我可以将左侧小部件文件名(单个或多个)拖放到右侧列表小部件中。我也可以双击左边的小部件文件名,然后它们移动到右边的列表小部件。当我将文件名从左侧列表移动到右侧列表时,我希望 Python 运行一个方法,该方法将立即对我刚刚放入右侧列表中的文件进行一些特殊处理。但是,拖放后我无法收到任何程序响应,这将允许程序激活处理该文件。尽管如此,我可以单击刚刚拖放到右侧列表小部件中的文件,并获得诸如文件名和行之类的响应。不需要进行拖放操作,然后再次单击文件名。下降应该立即激活我的预期处理。我已经尝试了 dragEnterEvent、dragMoveEvent、dropEvent 方法,但没有得到它们的响应,这表面上允许我开始处理拖放的文件。
from PyQt5 import QtCore,QtWidgets
from PyQt5.QtWidgets import QListWidgetItem,QAbstractItemView
class Ui_MainWindow(object):
def setupUi(self,MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(480,300)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
#---------------------------------------------------------------------
self.left_list = QtWidgets.QListWidget(self.centralwidget)
self.left_list.setObjectName("left_list")
self.left_list.setGeometry(QtCore.QRect(30,60,200,200))
self.left_list.setStyleSheet("background-color: '#FFFFFF'") # worked
self.left_list.setDragEnabled(True)
self.left_list.setDragDropOverwriteMode(False)
self.left_list.setSelectionMode(QAbstractItemView.ExtendedSelection)
self.left_list.setDefaultDropAction(QtCore.Qt.MoveAction)
#---------------------------------------------------------------------
self.right_list = QtWidgets.QListWidget(self.centralwidget)
self.right_list.setObjectName("right_list")
self.right_list.setGeometry(QtCore.QRect(250,200))
self.right_list.setStyleSheet("background-color: '#FFFFFF'") # worked
self.right_list.setAcceptDrops(True)
self.right_list.setDefaultDropAction(QtCore.Qt.MoveAction)
#---------------------------------------------------------------------
list_test = ['file-1','file-2','file-3','file-4','file-5','file-6',]
self.left_list.addItems(list_test)
# --------------------------------------------------------------------
self.right_list.currentItemChanged.connect(self.right_item_Changed)
self.left_list.clicked.connect(self.left_item_clicked)
self.left_list.doubleClicked.connect(self.left_item_double_clicked)
def left_item_clicked(self):
item = self.left_list.currentItem()
print("left_item_clicked: ",str(item.text()))
def left_item_double_clicked(self):
print("left_item_double_clicked: ",end='')
item = self.left_list.currentItem()
print(str(item.text()))
self.right_list.addItem(str(item.text()))
def right_item_clicked(self):
item = self.right_list.currentItem()
print("right_item_clicked: ",str(item.text()))
def right_item_Changed(self):
print("\nright_item_Changed——")
print("currentRow: ",self.right_list.currentRow())
print("currentItem: ",self.right_list.currentItem().text())
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。