Re: Any PyQt developers here?

2022-10-27 Thread DFS

On 10/25/2022 1:45 PM, Thomas Passin wrote:

On 10/25/2022 1:03 PM, DFS wrote:

Having problems with removeRow() on a QTableView object.


removeRow() isn't listed as being a method of a QTableView, not even an 
inherited method, so how are you calling removeRow() on it? (See 
https://doc.qt.io/qt-6/qtableview-members.html)


Since you helped me on the last one, maybe you could try to answer a 
couple more [probably simple] roadblocks I'm hitting.



I just wanna set the font to bold/not-bold when clicking on a row in 
QTableView.




With a QTableWidget I do it like this:

font = QFont()
font.setBold(True) or False
QTableWidget.item(row,col).setFont(font)



But the QTableView has data/view 'models' attached to it and that syntax 
doesn't work:



Tried:
font = QFont()
font.setBold(True) or False
model = QTableView.model()
model.setFont(model.index(row,col), font)

Throws AttributeError: 'QSqlTableModel' object has no attribute 'setFont'


This doesn't throw an error, but doesn't show bold:
model.setData(model.index(tblRow, col), font, Qt.FontRole)


Any ideas?

Thanks
--
https://mail.python.org/mailman/listinfo/python-list


Re: Any PyQt developers here?

2022-10-27 Thread Thomas Passin

On 10/27/2022 11:15 AM, DFS wrote:

On 10/25/2022 1:45 PM, Thomas Passin wrote:

On 10/25/2022 1:03 PM, DFS wrote:

Having problems with removeRow() on a QTableView object.


removeRow() isn't listed as being a method of a QTableView, not even 
an inherited method, so how are you calling removeRow() on it? (See 
https://doc.qt.io/qt-6/qtableview-members.html)


Since you helped me on the last one, maybe you could try to answer a 
couple more [probably simple] roadblocks I'm hitting.



I just wanna set the font to bold/not-bold when clicking on a row in 
QTableView.




With a QTableWidget I do it like this:

font = QFont()
font.setBold(True) or False
QTableWidget.item(row,col).setFont(font)



But the QTableView has data/view 'models' attached to it and that syntax 
doesn't work:



Tried:
font = QFont()
font.setBold(True) or False
model = QTableView.model()
model.setFont(model.index(row,col), font)

Throws AttributeError: 'QSqlTableModel' object has no attribute 'setFont'


This doesn't throw an error, but doesn't show bold:
model.setData(model.index(tblRow, col), font, Qt.FontRole)


Any ideas?


You definitely need to be setting the font in an item.  I'm not sure but 
I think that your QFont() doesn't have any properties, so it doesn't do 
anything.  I found this bit in a page - it's in C++ instead of Python 
but that doesn't really make a difference except for the exact syntax to 
use -



https://forum.qt.io/topic/70016/qlistview-item-font-stylesheet-not-working/4

  QVariant v = ModelBaseClass::data(index,role);
  if( condition && role == Qt::FontRole )
  {
   QFont font = v.value();
font.setBold( true );
   v = QVariant::fromValue( font );
  }

IOW, you have to get the font from the item, then set it to bold, which 
you would do with setFont().  Then you set that new font on the item. Of 
course you would have to unset bold on it later. See


https://doc.qt.io/qt-6/qtablewidgetitem.html#font

Instead of "item", you might need to operate on "row".  I didn't look 
into that.  Since a row probably doesn't have just one font (since it 
can have more than one item), you'd still have to get the font from some 
item in the row.


You might also be able to make the item bold using CSS, but I'm not sure.


Thanks


Internet searches are your friend for questions like this.  I've never 
worked with a QTableView, so I had to start with some knowledge about 
some other parts of QT.  I found the first page searching for "qt set 
qtableview row font", and the second searching for "qtablewidgetitem".


--
https://mail.python.org/mailman/listinfo/python-list


Crafting Software (PUG practical meeting)

2022-10-27 Thread dn

Wed, 2 Nov 2022 at 1830~2030 NZDT (0530~0730 UTC)

Come to our Coding Evening with your Python questions, suggestions, 
problems, etc; and/or bring a Lightning Talk about your current 
topic-of-interest - something new, a recent discovery, a contribution 
you have made...


Thereafter, we will continue the Crafting Software series. These are 
code-along-at-home exercises. The initial sessions were designed for 
Beginners, and have gradually 'grown' into areas which will challenge 
and benefit Journeyman Python Programmers and even Masters. The aim is 
to complement our Software Craftsmanship Presentation series with 
practical coding and observing the advantages of craftsmanship, as 
we/the code becomes more sophisticated.


We are enjoying meeting attendees from all over the world (Europeans 
invert their screens to be able to see us 'right way up' (!?))


Please RSVP to be advised of the web-conference URL, and QuickStart 
Guide. https://www.meetup.com/nzpug-auckland/events/hgxmwsydcpbdb/


--
Regards,
=dn
Auckland Branch, New Zealand Python Users' Group
--
https://mail.python.org/mailman/listinfo/python-list


Re: Any PyQt developers here?

2022-10-27 Thread Thomas Passin

This looks like a useful tutorial -

https://doc.qt.io/qt-6/modelview.html

On 10/27/2022 3:47 PM, Thomas Passin wrote:

On 10/27/2022 11:15 AM, DFS wrote:

On 10/25/2022 1:45 PM, Thomas Passin wrote:

On 10/25/2022 1:03 PM, DFS wrote:

Having problems with removeRow() on a QTableView object.


removeRow() isn't listed as being a method of a QTableView, not even 
an inherited method, so how are you calling removeRow() on it? (See 
https://doc.qt.io/qt-6/qtableview-members.html)


Since you helped me on the last one, maybe you could try to answer a 
couple more [probably simple] roadblocks I'm hitting.



I just wanna set the font to bold/not-bold when clicking on a row in 
QTableView.




With a QTableWidget I do it like this:

font = QFont()
font.setBold(True) or False
QTableWidget.item(row,col).setFont(font)



But the QTableView has data/view 'models' attached to it and that 
syntax doesn't work:



Tried:
font = QFont()
font.setBold(True) or False
model = QTableView.model()
model.setFont(model.index(row,col), font)

Throws AttributeError: 'QSqlTableModel' object has no attribute 'setFont'


This doesn't throw an error, but doesn't show bold:
model.setData(model.index(tblRow, col), font, Qt.FontRole)


Any ideas?


You definitely need to be setting the font in an item.  I'm not sure but 
I think that your QFont() doesn't have any properties, so it doesn't do 
anything.  I found this bit in a page - it's in C++ instead of Python 
but that doesn't really make a difference except for the exact syntax to 
use -



https://forum.qt.io/topic/70016/qlistview-item-font-stylesheet-not-working/4

   QVariant v = ModelBaseClass::data(index,role);
   if( condition && role == Qt::FontRole )
   {
    QFont font = v.value();
     font.setBold( true );
    v = QVariant::fromValue( font );
   }

IOW, you have to get the font from the item, then set it to bold, which 
you would do with setFont().  Then you set that new font on the item. Of 
course you would have to unset bold on it later. See


https://doc.qt.io/qt-6/qtablewidgetitem.html#font

Instead of "item", you might need to operate on "row".  I didn't look 
into that.  Since a row probably doesn't have just one font (since it 
can have more than one item), you'd still have to get the font from some 
item in the row.


You might also be able to make the item bold using CSS, but I'm not sure.


Thanks


Internet searches are your friend for questions like this.  I've never 
worked with a QTableView, so I had to start with some knowledge about 
some other parts of QT.  I found the first page searching for "qt set 
qtableview row font", and the second searching for "qtablewidgetitem".




--
https://mail.python.org/mailman/listinfo/python-list