欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyQt5中QTableWidget如何彈出菜單的示例代碼

 更新時(shí)間:2020年02月23日 14:54:41   作者:qq_45690024  
這篇文章主要介紹了PyQt5中QTableWidget如何彈出菜單的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

QTableWidget是Qt程序中常用的顯示數(shù)據(jù)表格的控件,類似于c#中的DataGrid。QTableWidget是QTableView的子類,它使用標(biāo)準(zhǔn)的數(shù)據(jù)模型,并且其單元數(shù)據(jù)是通過(guò)QTableWidgetItem對(duì)象來(lái)實(shí)現(xiàn)的,使用QTableWidget時(shí)就需要QTableWidgetItem。用來(lái)表示表格中的一個(gè)單元格,整個(gè)表格就是用各個(gè)單元格構(gòu)建起來(lái)的

在PyQt5中,常需要對(duì)表格進(jìn)行右擊后彈出菜單,要實(shí)現(xiàn)這個(gè)操作就是兩個(gè)問(wèn)題:1. 如何彈出菜單。2. 如何在滿足條件的情況下彈出菜單

在本文中簡(jiǎn)要介紹了一個(gè)方法來(lái)解決這個(gè)問(wèn)題(附在代碼中,大約從第60行開始)

from PyQt5 import QtCore
from PyQt5.QtCore import QSize, Qt
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

'''
如何彈出菜單
如何在滿足條件的情況下彈出菜單
'''
class TableWidgetContextMenu(QWidget):
  def __init__(self):
    super(TableWidgetContextMenu, self).__init__()
    self.initUI()

  def initUI(self):
    self.setWindowTitle("在表格中顯示上下文菜單")
    self.resize(500, 300)
    layout = QHBoxLayout()

    self.tableWidget = QTableWidget()
    self.tableWidget.setRowCount(5)
    self.tableWidget.setColumnCount(3)

    layout.addWidget(self.tableWidget)

    self.tableWidget.setHorizontalHeaderLabels(['姓名', '性別', '年齡'])

    # 第一行
    Item1 = QTableWidgetItem("老王")
    self.tableWidget.setItem(0, 0, Item1)

    Item2 = QTableWidgetItem("男")
    self.tableWidget.setItem(0, 1, Item2)

    Item3 = QTableWidgetItem("30")
    self.tableWidget.setItem(0, 2, Item3)

    # 第二行
    Item1 = QTableWidgetItem("小王")
    self.tableWidget.setItem(1, 0, Item1)

    Item2 = QTableWidgetItem("男")
    self.tableWidget.setItem(1, 1, Item2)

    Item3 = QTableWidgetItem("28")
    self.tableWidget.setItem(1, 2, Item3)

    # 第三行
    Item1 = QTableWidgetItem("小紅")
    self.tableWidget.setItem(2, 0, Item1)

    Item2 = QTableWidgetItem("女")
    self.tableWidget.setItem(2, 1, Item2)

    Item3 = QTableWidgetItem("18")
    self.tableWidget.setItem(2, 2, Item3)

    # 允許彈出菜單
    self.tableWidget.setContextMenuPolicy(Qt.CustomContextMenu)

    # 將信號(hào)請(qǐng)求連接到槽(單擊鼠標(biāo)右鍵,就調(diào)用方法)
    self.tableWidget.customContextMenuRequested.connect(self.generateMenu)

    self.setLayout(layout)

  # pos為點(diǎn)擊的位置
  def generateMenu(self, pos):
    print(pos)
    # 得到索引
    for i in self.tableWidget.selectionModel().selection().indexes():
      rowNum = i.row()

    # 如果選擇的行索引小于1,彈出上下文菜單
    if rowNum < 3:
      menu = QMenu()
      item1 = menu.addAction("菜單1")
      item2 = menu.addAction("菜單2")
      item3 = menu.addAction("菜單3")
      # 使菜單在正常位置顯示
      screenPos = self.tableWidget.mapToGlobal(pos)

      # 單擊一個(gè)菜單項(xiàng)就返回,使之被阻塞
      action = menu.exec(screenPos)
      if action == item1:
        print('選擇菜單1', self.tableWidget.item(rowNum, 0).text())
      if action == item2:
        print('選擇菜單2', self.tableWidget.item(rowNum, 0).text())
      if action == item3:
        print('選擇菜單3', self.tableWidget.item(rowNum, 0).text())
      else:
        return



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

到此這篇關(guān)于PyQt5中QTableWidget如何彈出菜單的示例代碼的文章就介紹到這了,更多相關(guān)PyQt5 QTableWidget 彈出菜單內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • drf-router和authenticate認(rèn)證源碼分析

    drf-router和authenticate認(rèn)證源碼分析

    在 Rest Framework 中提供了兩個(gè) router , 可以幫助我們快速的實(shí)現(xiàn)路由的自動(dòng)生成,本文通過(guò)實(shí)例代碼給大家介紹drf-router和authenticate認(rèn)證源碼分析,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • python實(shí)現(xiàn)不同文件夾下的函數(shù)相互調(diào)用

    python實(shí)現(xiàn)不同文件夾下的函數(shù)相互調(diào)用

    這篇文章主要介紹了python實(shí)現(xiàn)不同文件夾下的函數(shù)相互調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 詳解Python匿名函數(shù)(lambda函數(shù))

    詳解Python匿名函數(shù)(lambda函數(shù))

    這篇文章主要介紹了Python匿名函數(shù)(lambda函數(shù)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python?colorama?彩色打印實(shí)現(xiàn)代碼

    Python?colorama?彩色打印實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python?colorama?彩色打印實(shí)現(xiàn)代碼,將介紹的類為Back,?它實(shí)現(xiàn)了與?Fore?類相同的九個(gè)關(guān)鍵字:BLACK、RED、GREEN、YELLOW、BLUE、MAGENTA、CYAN、WHITE、RESET,感興趣的朋友一起看看吧
    2022-04-04
  • python 第三方庫(kù)paramiko的常用方式

    python 第三方庫(kù)paramiko的常用方式

    這篇文章主要介紹了python 第三方庫(kù)paramiko的常用方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 深入了解Python裝飾器的高級(jí)用法

    深入了解Python裝飾器的高級(jí)用法

    這篇文章主要介紹了Python裝飾器的高級(jí)用法,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • 獨(dú)立進(jìn)程使用django模型及django.setup()使用

    獨(dú)立進(jìn)程使用django模型及django.setup()使用

    這篇文章主要介紹了獨(dú)立進(jìn)程使用django模型(django.setup()使用),它提供了一種簡(jiǎn)單且高效的方式來(lái)利用Django強(qiáng)大的功能,并使你的代碼更易于維護(hù)和擴(kuò)展,需要的朋友可以參考下
    2023-07-07
  • python處理json字符串(使用json.loads而不是eval())

    python處理json字符串(使用json.loads而不是eval())

    eval 跟json.loads 是不一樣的函數(shù),是有實(shí)現(xiàn)不一樣功能的地方,但是在某些地方它們兩個(gè)函數(shù)的功能是一樣的,本文就詳細(xì)介紹一下
    2021-09-09
  • Python實(shí)現(xiàn)的簡(jiǎn)單dns查詢功能示例

    Python實(shí)現(xiàn)的簡(jiǎn)單dns查詢功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的簡(jiǎn)單dns查詢功能,結(jié)合實(shí)例形式分析了Python基于socket模塊的dns信息查詢實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05
  • Python利用雪花算法實(shí)現(xiàn)生成唯一ID

    Python利用雪花算法實(shí)現(xiàn)生成唯一ID

    雪花算法是在一個(gè)項(xiàng)目體系中生成全局唯一ID標(biāo)識(shí)的一種方式,偶然間看到了Python使用雪花算法不盡感嘆真的是太便捷了。本文就來(lái)聊聊這具體的實(shí)現(xiàn)方法,感興趣的可以了解一下
    2022-11-11

最新評(píng)論