在一个PyQt的QListWidget中,我拖放文件的时候要有完整的路径。现在我想让滚动条在我每次拖动东西的时候向右滚动。
然而,似乎只有
scrollToTop()
和
scrollToBottom()
,但我找不到
scrollToLeft()
或
scrollToRight()
或类似的东西。列表项文本的右对齐没有帮助,显然我需要将水平滚动条向右滚动。
我怎样才能自动向右滚动,使我看到文件名。 not 路径的开头? 这一定是个简单的设置,但我至今没有找到有用的文档或例子。
Code:
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QApplication, QWidget, QAbstractItemView, QVBoxLayout
class MyListWidget(QListWidget):
def __init__(self, parent):
super(MyListWidget, self).__init__(parent)
# self.setDragDropMode(QAbstractItemView.InternalMove)
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
if event.mimeData().hasUrls() or event.mimeData().hasFormat("text/plain"):
event.acceptProposedAction()
else:
super(MyListWidget, self).dragEnterEvent(event)
def dropEvent(self, event):
if event.mimeData().hasUrls():
for url in event.mimeData().urls():
item = QListWidgetItem(url.toLocalFile())
self.addItem(item)
event.acceptProposedAction()
elif event.mimeData().hasFormat("text/plain"):
self.addItem(event.mimeData().text())
else:
super(myListWidget,self).dropEvent(event)
self.scrollToBottom() ### but I want scrollToRight() !!!
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.left = 50
self.top = 50
self.width = 900
self.height = 500
self.initUI()
def initUI(self):
self.vbox = QVBoxLayout()
self.lw_myList = MyListWidget(self)
self.vbox.addWidget(self.lw_myList)
self.setLayout(self.vbox)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
# app.setStyle("plastique")
window = MyWindow()
# window.show()
sys.exit(app.exec_())
Result: