QTableWidget表格内的按钮点击实现获取按钮所在表格位置

一.说一下我遇到的问题,我在QTableWidget表格里面加了一个按钮单元格,想点击这个按钮,然后选择一个文件地址,把这个地址放在按钮单元格前面的单元格里面,但是网上没找到如何点击按钮获得按钮所在单元格位置的方法,如果我获得按钮单元格位置,我就可以列数减1就找到位置了。

二.在网上搜了很多办法,最后总结一下,在加入自己想法,终于实现。

三.解决方法:

1.当点击按钮时,会触发connect,在connnect连接的函数里面获取此时鼠标在屏幕的位置

2.获取窗口在屏幕的位置

3.计算出每个单元格的高度,以及获取窗口到第一行单元格的纵向距离(可以用获取鼠标位置,测出距离)

4.这样,(  鼠标纵坐标  -  窗口纵坐标  -  窗口到第一行单元格的纵向距离  )/  单元格的高度,最后取这个值的上入整数,就是按钮单元格所在的行数了,下面就简单多了。

5.下面是我的代码,这个代码只是我代码的一部分,单独拿出来不能使用,参考一下

import pyautogui as pag
import win32api
import math
def openfile(self, column):
       mouse_x, mouse_y =pag.position()
       window_x,window_y=self.pos().x(), self.pos().y()   
       row = math.ceil((mouse_y-window_y-84)/37)      #84是窗口到第一行单元格的纵向距离
       address,_ =QFileDialog.getOpenFileName(self, "Get address", "/") 
       item = QTableWidgetItem(str(address)) 
            item.setTextAlignment(Qt.AlignVCenter | Qt.AlignHCenter) 
            self.MyTable.setItem(row-1, column-1, item)

你可能感兴趣的:(pyqt5)