Jak mogę użyć nazwy obiektu projektanta QT w formularzu "Boxxy", gdzie X jest wartość wiersza, a wartość Y to wartość kolumnowa dla listy Python 2D;

import sys,os
from PyQt5 import QtCore, QtGui, uic
rowsColumns=[[],[],[],[],[],[],[],[],[],[]]##Current grid values

allScreens=uic.loadUiType("newSudokuScreens.ui")[0]

class aWindowClass(QtGui.QMainWindow, allScreens):
    def __init__(self, parent=none):
        QtGui.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.GPScreen.setVisible(True)
        self.CPScreen.setVisible(False)
        self.DSScreen.setVisible(False)
        self.HTPScreen.setVisible(False)
        self.MMScreen.setVisible(False)
        self.NPSUScreen.setVisible(False)
        self.PSIScreen.setVisible(False)
        self.RUPScreen.setVisible(False)
        self.SPUScreen.setVisible(False)
        self.box00.clicked.connect(self.findRowColumn)
    
    def findRowColumn(self):
        row=#4th character of button name
        column=#5th character of button
        numberWanted=int(input('enter value wanted')) #is part of UI but making row and column value work will help make this work
        rowsColumns[row][column]=numberWanted
    
for i in range(0,9):
    for j in range(0,9):
        rowsColumns[i].append(0) #fill grid with necessary 81 spaces for sudoku
    print(rowsColumns[i])
    
app=QtGui.QApplication(sys.argv)
aWindow=aWindowClass(None)
aWindow.show()
app.exec_()

Więc na przykład, jeśli przycisk Box56 jest klikany, chcę przejść box56 jako zmienną, a następnie w procedurze, gdy pole zostanie kliknięty wiersz, zostanie ustawiony jako 5, a kolumna zostanie ustawiona jako 6, a następnie do tego miejsca na liście 2D.

Z góry dziękuję.

-1
Samuel W 14 październik 2020, 16:03

1 odpowiedź

Najlepsza odpowiedź

Niezależnie od Rozwiązanie zaproponowane przez @eyllanesc, łatwo jest znaleźć obiekt, który wysłał sygnał i jego właściwości .

Tutaj możesz zrobić:

def findRowColumn(self):
    button_name = self.sender().text()   # gets the text of the button
    row = int(button_name[3]) # 4th character of button name
    column = int(button_name[4]) # 5th character of button
    numberWanted = int(
        input('enter value wanted'))  # is part of UI but making row and column value work will help make this work
    rowsColumns[row][column] = numberWanted
0
Serge Ballesta 15 październik 2020, 08:20