Python Forum
Python Qt Asking for a table event
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python Qt Asking for a table event
#1
Hello Everybody,

sorry, I've a simple English language.

My issue is QtableWidget , how can I put information inside a table by using QLineEdit , QRadioButton and QPushButton ?

if I write any thing in the Line Edit show inside QTableWidget

I'll put my code Here and my window's screenshot Gui

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys


app = QApplication(sys.argv)

window = QWidget()
window.setGeometry(350,150,600,450)
window.setWindowTitle('Table')
window.setToolTip('This program is not complete')


Lable1 = QLabel('Full Name :',window)
Lable1.move(40,15)
Lable1 = QLabel('Age :',window)
Lable1.move(252,15)
Lable1 = QLabel('Gender :',window)
Lable1.move(380,15)

btnAdd = QPushButton('Add',window)
btnAdd.resize(80,30)
btnAdd.move(500,40)

LinEd1 = QLineEdit('',window) # Name Line Edit
LinEd1.resize(200,30)
LinEd1.move(40,40)
LinEd2 = QLineEdit('',window) # Age Line Edit
LinEd2.resize(100,30)
LinEd2.move(250,40)


RadioM = QRadioButton('Male',window) # Gender Radio Buttons
RadioM.move(370,35)
RadioF = QRadioButton('Female',window) # Gender Radio Buttons
RadioF.move(370,55)


tablEx = QTableWidget(window)
tablEx.resize(540,300)
tablEx.move(30,100)
tablEx.setColumnCount(3)
tablEx.setRowCount(9)
tablEx.setHorizontalHeaderLabels(("Name,Age,Gender").split(','))



window.show()
app.exec_()


this is a screenshot of my window gui
[Image: p_932e7vs71.png]

thank you for attention
Reply
#2
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys


def btnAdd_pressed():
    # setItem(row,column,content)
    tablEx.setItem(0, 0, QTableWidgetItem(LinEd1.text()))
    tablEx.setItem(0, 1, QTableWidgetItem(LinEd2.text()))
    if RadioM.isChecked():
        tablEx.setItem(0, 2, QTableWidgetItem('Male'))
    elif RadioF.isChecked():
        tablEx.setItem(0, 2, QTableWidgetItem('Female'))
    else:
        tablEx.setItem(0, 2, QTableWidgetItem('None'))


app = QApplication(sys.argv)

window = QWidget()
window.setGeometry(350, 150, 600, 450)
window.setWindowTitle('Table')
window.setToolTip('This program is not complete')


Lable1 = QLabel('Full Name :', window)
Lable1.move(40, 15)
Lable1 = QLabel('Age :', window)
Lable1.move(252, 15)
Lable1 = QLabel('Gender :', window)
Lable1.move(380, 15)

btnAdd = QPushButton('Add', window)
btnAdd.resize(80, 30)
btnAdd.move(500, 40)
# Add an action for the button click
btnAdd.clicked.connect(btnAdd_pressed)

LinEd1 = QLineEdit('', window)  # Name Line Edit
LinEd1.resize(200, 30)
LinEd1.move(40, 40)
LinEd2 = QLineEdit('', window)  # Age Line Edit
LinEd2.resize(100, 30)
LinEd2.move(250, 40)


RadioM = QRadioButton('Male', window)  # Gender Radio Buttons
RadioM.move(370, 35)
RadioF = QRadioButton('Female', window)  # Gender Radio Buttons
RadioF.move(370, 55)


tablEx = QTableWidget(window)
tablEx.resize(540, 300)
tablEx.move(30, 100)
tablEx.setColumnCount(3)
tablEx.setRowCount(9)
tablEx.setHorizontalHeaderLabels(("Name,Age,Gender").split(','))


window.show()
app.exec_()
Now you have to think about a way to increment the row when btnAdd_pressed() is called.
Reply
#3
thank you very much mr.gontajones

I add a clear action to the brnAdd_pressed definition .. Like this :

def btnAdd_pressed():
    # setItem(row,column,content)
    tablEx.setItem(0, 0, QTableWidgetItem(LinEd1.text()))
    tablEx.setItem(0, 1, QTableWidgetItem(LinEd2.text()))
    if RadioM.isChecked():
        tablEx.setItem(0, 2, QTableWidgetItem('Male'))
    elif RadioF.isChecked():
        tablEx.setItem(0, 2, QTableWidgetItem('Female'))
    else:
        tablEx.setItem(0, 2, QTableWidgetItem('None'))
    LinEd1.clear()
    LinEd2.clear()
Reply
#4
That's good!

But with this code you can only edit the first row.
Maybe you can use a global variable to get track of what is the next row to put data in.

MAX_ROWS = 8
curr_row = 0

def btnAdd_pressed():
    global curr_row
    # setItem(row,column,content)
    tablEx.setItem(curr_row, 0, QTableWidgetItem(LinEd1.text()))
    tablEx.setItem(curr_row, 1, QTableWidgetItem(LinEd2.text()))
    if RadioM.isChecked():
        tablEx.setItem(curr_row, 2, QTableWidgetItem('Male'))
    elif RadioF.isChecked():
        tablEx.setItem(curr_row, 2, QTableWidgetItem('Female'))
    else:
        tablEx.setItem(curr_row, 2, QTableWidgetItem('None'))
    LinEd1.clear()
    LinEd2.clear()
    curr_row += 1
    if curr_row >= MAX_ROWS:
        curr_row = 0
Reply
#5
Thanks sir for help
best regards
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020