在PyQt5中上下移动行[重复]

     2023-03-29     217

关键词:

【中文标题】在PyQt5中上下移动行[重复]【英文标题】:Move row up and down in PyQt5 [duplicate] 【发布时间】:2020-08-12 00:41:36 【问题描述】:

考虑一个 QTableWidget 和两个按钮“上移”和“下移”。点击上移,当前行应该上移一行,类似于“下移”。

实现相应的上移和下移功能最简单的方法是什么?或者是否可以将此 sn-p 代码更新为在 pyqt4 中执行相同任务的 pyqt5!

import sys
from PyQt4 import QtCore
from PyQt4 import QtGui

class mtable(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)


        self.move_up = QtGui.QAction("Move_Up", self)
        self.connect(self.move_up, QtCore.SIGNAL('triggered()'), self.moveUp)

        self.move_down = QtGui.QAction("Move_Down",self)
        self.connect(self.move_down, QtCore.SIGNAL('triggered()'), self.moveDown)

        self.toolbar = self.addToolBar('Toolbar')
        self.toolbar.addAction(self.move_up)
        self.toolbar.addAction(self.move_down)


        ##Init Table
        self.table = QtGui.QTableWidget(4,3)
        for i in range(0,4):
            for j in range(0,4):
                self.table.setItem(i,j,QtGui.QTableWidgetItem("a_"+str(i)+str(j)))

        self.setCentralWidget(self.table)

    def moveDown(self):
        row = self.table.currentRow()
        column = self.table.currentColumn();
        if row < self.table.rowCount()-1:
            self.table.insertRow(row+2)
            for i in range(self.table.columnCount()):
               self.table.setItem(row+2,i,self.table.takeItem(row,i))
               self.table.setCurrentCell(row+2,column)
            self.table.removeRow(row)        


    def moveUp(self):    
        row = self.table.currentRow()
        column = self.table.currentColumn();
        if row > 0:
            self.table.insertRow(row-1)
            for i in range(self.table.columnCount()):
               self.table.setItem(row-1,i,self.table.takeItem(row+1,i))
               self.table.setCurrentCell(row-1,column)
            self.table.removeRow(row+1)        


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    tb = mtable()
    tb.show()
    sys.exit(app.exec_())

【问题讨论】:

【参考方案1】:

要转换为 PyQt5,您只需将导入和模块从 QtGui 更改为 QtWidgets 以及信号槽连接的语法。

import sys
from PyQt5 import QtWidgets

class mtable(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        
        self.move_up = QtWidgets.QAction("Move_Up", self)
        self.move_up.triggered.connect(self.moveUp)

        self.move_down = QtWidgets.QAction("Move_Down",self)
        self.move_down.triggered.connect(self.moveDown)

        self.toolbar = self.addToolBar('Toolbar')
        self.toolbar.addAction(self.move_up)
        self.toolbar.addAction(self.move_down)

        ##Init Table
        self.table = QtWidgets.QTableWidget(4,3)
        for i in range(0,4):
            for j in range(0,4):
                self.table.setItem(i,j,QtWidgets.QTableWidgetItem("a_"+str(i)+str(j)))

        self.setCentralWidget(self.table)

类的其余部分应该是相同的,只是对 QApplication 进行了一次编辑。

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    tb = mtable()
    tb.show()
    sys.exit(app.exec_())

【讨论】:

如何在表格中上下移动行并使用javascript在新div中显示行内容

】如何在表格中上下移动行并使用javascript在新div中显示行内容【英文标题】:Howtomoveupanddownrowsinatableandshowtherowcontentinanewdivwithjavascript【发布时间】:2017-09-1522:19:04【问题描述】:我有一个表格供用户编辑和查看。我想在div中显... 查看详情

如何在 PyQt5 的上下文菜单中添加上下文菜单?

】如何在PyQt5的上下文菜单中添加上下文菜单?【英文标题】:HowtoaddacontextmenutoacontextmenuinPyQt5?【发布时间】:2021-01-3100:16:56【问题描述】:我正在使用PyQt5在python中构建一个GUI,我需要当我右键单击上下文菜单中的一个选项时... 查看详情

在 Vim 中上下移动整行

】在Vim中上下移动整行【英文标题】:MoveentirelineupanddowninVim【发布时间】:2010-10-1900:20:59【问题描述】:在Notepad++中,我可以使用Ctrl+Shift+Up/Down将当前行向上移动和下来。Vim中是否有类似的命令?我翻遍了无穷无尽的指南,但... 查看详情

如何在 PyQt5 中保持行和列大小与网格布局相同?

...。但是,当我调整窗口大小时,网格布局确实会随着窗口移动,但其内容不对齐,并且行和列大小不再匹配。有没有 查看详情

在 Android 上下载文本文件 [重复]

】在Android上下载文本文件[重复]【英文标题】:DownloadatextfileonAndroid[duplicate]【发布时间】:2013-06-0814:39:19【问题描述】:我需要从服务器下载一个文本文件并将其保存在内存中。然后逐行阅读。更好的是-直接从服务器逐行读取... 查看详情

VS2015中如何上下移动行

】VS2015中如何上下移动行【英文标题】:HowtomovelineupanddowninVS2015【发布时间】:2016-10-1303:17:34【问题描述】:我不知道最近VisualStudio2015中是否发生了某些变化,但在我能够按ALT+UPARROWKEY或ALT+DOWNARROWKEY向上或向下移动代码行之前... 查看详情

xcode设置快捷键整行剪切、向下新建一行、整行上下移动

参考技术A在使用[AndroidStudio]过程中,特喜欢删除一行和复制一行的的快捷键。而恰巧Xcode不支持这些快捷键,我们来增加这几个快捷键,以下是步骤:修改权限修改Xcode里快捷键的配置文件(plist)权限,打开终端输入如下两条命令... 查看详情

在“轨道”中滑动的移动图像[重复]

...想在铁轨上移动的图像。当我将手指放在上面时,我只能上下移动它,而不能左右移动。以及如何使它们“粘”在顶部或底部?(或两者兼有)谢谢。【问题讨论】:在新位置绘制图像时不改变x坐标?【参考方案1】:在此处查... 查看详情

PyQt5 QTableWidget:右键选择列,并在上下文菜单中显示删除条目

】PyQt5QTableWidget:右键选择列,并在上下文菜单中显示删除条目【英文标题】:PyQt5QTableWidget:selectcolumnwithrightclick,andshowadeleteentryincontextmenu【发布时间】:2019-02-2106:41:12【问题描述】:我想在右键单击时选择一列,然后上下文菜... 查看详情

如何将 QTextBrowser(其中包含 html 表)的光标移动到 PyQt5 中的特定行?

】如何将QTextBrowser(其中包含html表)的光标移动到PyQt5中的特定行?【英文标题】:HowtomovethecursorofaQTextBrowser(withanhtmltableinit)toaspecificlineinPyQt5?【发布时间】:2017-05-2311:28:15【问题描述】:我创建了一个QTextBrowser来在我的代码中... 查看详情

如何在 PyQt5 中相对于父窗口移动子窗口?

】如何在PyQt5中相对于父窗口移动子窗口?【英文标题】:HowtomoveachildwindowrelativetoaparentwindowinPyQt5?【发布时间】:2021-03-2211:24:15【问题描述】:我有以下代码,但我希望新窗口不完全设置在主窗口的中心。我更愿意将它向左移动... 查看详情

在pyqt5中单击按钮之前触发浏览按钮方法[重复]

】在pyqt5中单击按钮之前触发浏览按钮方法[重复]【英文标题】:Browsebuttonmethodtrigerringbeforethebuttonisclickedinpyqt5[duplicate]【发布时间】:2020-05-2605:30:32【问题描述】:我在UI中有浏览按钮,单击该按钮会触发打开文件对话框。我的... 查看详情

如何在 Android Studio 中移动(上/下)代码行?

...9-0407:44:01【问题描述】:在Eclipse中,我们使用Alt+↑/↓来上下移动一行。AndroidStudio中是否有任何快捷方式可以做到这一点?或者有什么快速的方法可以避免复制和粘贴?【问题讨论】:【参考方案1】:在windows中,您可以进 查看详情

在带有 PyQt5 的嵌入式 Matplotlib GUI 应用程序中使用交互模式 [重复]

...在带有PyQt5的嵌入式MatplotlibGUI应用程序中使用交互模式[重复]【英文标题】:UsetheinteractivemodeinanembeddedMatplotlibGUIapplicationwithPyQt5[duplicate]【发布时间】:2016-12-0510:35:09【问题描述】:我在Python3.5、PyQt5和Matplotlib1.5.3中编写了一个程... 查看详情

如何在pyqt5 Python中的行编辑中添加背景文本

】如何在pyqt5Python中的行编辑中添加背景文本【英文标题】:Howtoaddbackgroundtextinlineeditinpyqt5Python【发布时间】:2020-08-1105:14:35【问题描述】:我正在处理一个python项目,其中包括pyqt5。我正在使用qtdesigner来设计UI,然后编写它的... 查看详情

PyQt5 - 关闭应用程序 bec。 .value() 方法的错误[重复]

】PyQt5-关闭应用程序bec。.value()方法的错误[重复]【英文标题】:PyQt5-closesapplicationbec.oferrorwith.value()method[duplicate]【发布时间】:2018-10-2417:43:15【问题描述】:每当我在我的PyQt5应用程序的第二个窗口中单击一个按钮时,该按钮应... 查看详情

PyQt5从开环中创建的多个按钮中检索ID和值[重复]

】PyQt5从开环中创建的多个按钮中检索ID和值[重复]【英文标题】:PyQt5retrievingIDandvaluesfrommultipleButtonscreatedinanopenloop[duplicate]【发布时间】:2021-02-0819:10:55【问题描述】:我正在尝试基于条目(QLineEdit)创建按钮(QPushButtons)。我的想... 查看详情

当我在 PyQt5 窗口中嵌入 Matplotlib 图形时,为啥有两个重复的轴标签?

】当我在PyQt5窗口中嵌入Matplotlib图形时,为啥有两个重复的轴标签?【英文标题】:WhytherearetwoduplicateaxeslabelswhenIembedMatplotlibfigureinsideaPyQt5window?当我在PyQt5窗口中嵌入Matplotlib图形时,为什么有两个重复的轴标签?【发布时间】:... 查看详情