<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - PyQt</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide sur PyQt]]></description>
		<language>fr</language>
		<lastBuildDate>Fri, 17 Apr 2026 12:28:32 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - PyQt</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Comment faire le .after() de tkinter en Qt</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183183&amp;goto=newpost</link>
			<pubDate>Mon, 13 Apr 2026 10:14:55 GMT</pubDate>
			<description>Bonjour 
 
Je cherche à...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
<br />
Je cherche à migrer un code écrit avec tkinter vers python et Qt.<br />
<br />
Le point qui me questionne est la réalisation du ré-appel d'une fonction par elle même après un certain délai pour réaliser des animations de widgets.<br />
<br />
Le code python tkinter utilisé ici pour un chronomètre est le suivant :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">def</span> Chronometre<span class="br0">&#40;</span><span class="br0">&#41;</span>:
&nbsp;
     CODE DE LA FONCTION ICI AFFICHAGE D<span style="color: #FF0000;">'UN CHRONOMETRE EN SECONDES</span>
&nbsp;
<span style="color: #FF0000;">    fen.after(1000,Chronometre)</span></pre></td></tr></table></code><hr />
</div><br />
Merci beaucoup pour l'aide.<br />
<br />
Cordialement.<br />
<br />
P.G</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f172/autres-langages/python/gui/pyqt/">PyQt</category>
			<dc:creator>P.G</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183183/autres-langages/python/gui/pyqt/faire-after-tkinter-qt/</guid>
		</item>
		<item>
			<title><![CDATA[[PyQt6] QStyleItemDelegate pour une Combobox ne s'applique qu'a une colonne]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183099&amp;goto=newpost</link>
			<pubDate>Wed, 08 Apr 2026 16:36:34 GMT</pubDate>
			<description>Bonjour, 
Je voudrais dans un...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Je voudrais dans un Qtableview pouvoir saisir des données par l'intermediaire d'une combobox <br />
J'ai trouvé cet exemple.<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">from</span> PyQt6.QtWidgets <span style="color: #0000ff;">import</span> <span class="br0">&#40;</span>
    QItemDelegate,QStyledItemDelegate, QComboBox, QTableView,
    QApplication, QMainWindow,QStyle,QStyleOptionComboBox
<span class="br0">&#41;</span>
<span style="color: #0000ff;">from</span> PyQt6.QtCore <span style="color: #0000ff;">import</span> Qt, QModelIndex, QAbstractTableModel, QVariant
&nbsp;
<span style="color: #808080;"># ------------------------------------------------------------------</span>
<span style="color: #808080;"># 1.  Mod&egrave;le simple (pour l&#146;exemple)</span>
<span style="color: #808080;"># ------------------------------------------------------------------</span>
<span style="color: #0000ff;">class</span> SimpleModel<span class="br0">&#40;</span>QAbstractTableModel<span class="br0">&#41;</span>:
    <span style="color: #0000ff;">def</span> <span style="color: #0080ff;">__init__</span><span class="br0">&#40;</span>self, data, headers, parent=<span style="color: #339933;">None</span><span class="br0">&#41;</span>:
        super<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span style="color: #0080ff;">__init__</span><span class="br0">&#40;</span>parent<span class="br0">&#41;</span>
        self._data = data          <span style="color: #808080;"># liste de listes</span>
        self._headers = headers
&nbsp;
    <span style="color: #0000ff;">def</span> rowCount<span class="br0">&#40;</span>self, parent=QModelIndex<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>:
        <span style="color: #0000ff;">return</span> len<span class="br0">&#40;</span>self._data<span class="br0">&#41;</span>
&nbsp;
    <span style="color: #0000ff;">def</span> columnCount<span class="br0">&#40;</span>self, parent=QModelIndex<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>:
        <span style="color: #0000ff;">return</span> len<span class="br0">&#40;</span>self._headers<span class="br0">&#41;</span>
&nbsp;
    <span style="color: #0000ff;">def</span> data<span class="br0">&#40;</span>self, index, role=Qt.ItemDataRole.DisplayRole<span class="br0">&#41;</span>:
        <span style="color: #0000ff;">if</span> <span style="color: #0000ff;">not</span> index.isValid<span class="br0">&#40;</span><span class="br0">&#41;</span>:
            <span style="color: #0000ff;">return</span> QVariant<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">if</span> role == Qt.ItemDataRole.DisplayRole:
            <span style="color: #0000ff;">return</span> self._data<span class="br0">&#91;</span>index.row<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>index.column<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
        <span style="color: #0000ff;">return</span> QVariant<span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp;
    <span style="color: #0000ff;">def</span> setData<span class="br0">&#40;</span>self, index, value, role=Qt.ItemDataRole.EditRole<span class="br0">&#41;</span>:
        <span style="color: #0000ff;">if</span> role == Qt.ItemDataRole.EditRole:
            self._data<span class="br0">&#91;</span>index.row<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>index.column<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#93;</span> = value
            self.dataChanged.emit<span class="br0">&#40;</span>index, index, <span class="br0">&#91;</span>role<span class="br0">&#93;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #339933;">True</span>
        <span style="color: #0000ff;">return</span> <span style="color: #339933;">False</span>
&nbsp;
    <span style="color: #0000ff;">def</span> flags<span class="br0">&#40;</span>self, index<span class="br0">&#41;</span>:
        <span style="color: #0000ff;">return</span> Qt.ItemFlag.ItemIsEditable | Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable
&nbsp;
    <span style="color: #0000ff;">def</span> headerData<span class="br0">&#40;</span>self, section, orientation, role=Qt.ItemDataRole.DisplayRole<span class="br0">&#41;</span>:
        <span style="color: #0000ff;">if</span> role == Qt.ItemDataRole.DisplayRole <span style="color: #0000ff;">and</span> orientation == Qt.Orientation.Horizontal:
            <span style="color: #0000ff;">return</span> self._headers<span class="br0">&#91;</span>section<span class="br0">&#93;</span>
        <span style="color: #0000ff;">return</span> QVariant<span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;"># ------------------------------------------------------------------</span>
<span style="color: #808080;"># 2.  Delegate avec ComboBox</span>
<span style="color: #808080;"># ------------------------------------------------------------------</span>
<span style="color: #0000ff;">class</span> ComboDelegate<span class="br0">&#40;</span>QStyledItemDelegate<span class="br0">&#41;</span>:
    <span style="color: #0000ff;">def</span> <span style="color: #0080ff;">__init__</span><span class="br0">&#40;</span>self, items, parent=<span style="color: #339933;">None</span><span class="br0">&#41;</span>:
        super<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span style="color: #0080ff;">__init__</span><span class="br0">&#40;</span>parent<span class="br0">&#41;</span>
&nbsp;
        self._items = items          <span style="color: #808080;"># liste des options du combo</span>
&nbsp;
    <span style="color: #808080;"># 2.1  Cr&eacute;e l&#146;&eacute;diteur</span>
    <span style="color: #0000ff;">def</span> createEditor<span class="br0">&#40;</span>self, parent, option, index<span class="br0">&#41;</span>:
        self.combo = QComboBox<span class="br0">&#40;</span>parent<span class="br0">&#41;</span>
        self.combo.addItems<span class="br0">&#40;</span>self._items<span class="br0">&#41;</span>
        <span style="color: #808080;"># Quand l&#146;utilisateur change la s&eacute;lection, on force la sauvegarde</span>
        self.combo.currentIndexChanged.connect<span class="br0">&#40;</span>
            <span style="color: #0000ff;">lambda</span>: self.commitData.emit<span class="br0">&#40;</span>self.combo<span class="br0">&#41;</span>   <span style="color: #808080;"># &lt;&#8209;&#8209; important</span>
        <span class="br0">&#41;</span>
        <span style="color: #0000ff;">return</span> self.combo
&nbsp;
    <span style="color: #808080;"># 2.2  Charge la valeur du mod&egrave;le dans le combo</span>
    <span style="color: #0000ff;">def</span> setEditorData<span class="br0">&#40;</span>self, editor, index<span class="br0">&#41;</span>:
        self.value = index.model<span class="br0">&#40;</span><span class="br0">&#41;</span>.data<span class="br0">&#40;</span>index, Qt.ItemDataRole.DisplayRole<span class="br0">&#41;</span>
        <span style="color: #0000ff;">if</span> self.value <span style="color: #0000ff;">in</span> self._items:
            editor.setCurrentIndex<span class="br0">&#40;</span>self._items.index<span class="br0">&#40;</span>self.value<span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">else</span>:
            editor.setCurrentIndex<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>   <span style="color: #808080;"># valeur par d&eacute;faut pour les nouvelles lignes</span>
&nbsp;
    <span style="color: #808080;"># 2.3  Enregistre la s&eacute;lection dans le mod&egrave;le</span>
    <span style="color: #0000ff;">def</span> setModelData<span class="br0">&#40;</span>self, editor, model, index<span class="br0">&#41;</span>:
        model.setData<span class="br0">&#40;</span>index, editor.currentText<span class="br0">&#40;</span><span class="br0">&#41;</span>, Qt.ItemDataRole.EditRole<span class="br0">&#41;</span>
&nbsp;
    <span style="color: #808080;"># 2.4  Positionne l&#146;&eacute;diteur dans la cellule</span>
    <span style="color: #0000ff;">def</span> updateEditorGeometry<span class="br0">&#40;</span>self, editor, option, index<span class="br0">&#41;</span>:
        editor.setGeometry<span class="br0">&#40;</span>option.rect<span class="br0">&#41;</span>
&nbsp;
    <span style="color: #0000ff;">def</span> paint<span class="br0">&#40;</span>self, painter, option, index<span class="br0">&#41;</span>:
        <span style="color: #808080;">#value = index.data(Qt.ItemDataRole.DisplayRole)</span>
        self.style = QApplication.style<span class="br0">&#40;</span><span class="br0">&#41;</span>
        self.opt = QStyleOptionComboBox<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #808080;">#opt.text = str(value)</span>
        self.opt.rect = option.rect
        self.style.drawComplexControl<span class="br0">&#40;</span>QStyle.ComplexControl.CC_ComboBox, self.opt, painter<span class="br0">&#41;</span>
        QStyledItemDelegate.paint<span class="br0">&#40;</span>self, painter, option, index<span class="br0">&#41;</span>
&nbsp;
&nbsp;
<span style="color: #808080;"># ------------------------------------------------------------------</span>
<span style="color: #808080;"># 3.  Application d&#146;exemple</span>
<span style="color: #808080;"># ------------------------------------------------------------------</span>
<span style="color: #0000ff;">class</span> MainWindow<span class="br0">&#40;</span>QMainWindow<span class="br0">&#41;</span>:
    <span style="color: #0000ff;">def</span> <span style="color: #0080ff;">__init__</span><span class="br0">&#40;</span>self<span class="br0">&#41;</span>:
        super<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span style="color: #0080ff;">__init__</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
        data = <span class="br0">&#91;</span>
            <span class="br0">&#91;</span><span style="color: #FF0000;">&quot;Alice&quot;</span>, <span style="color: #FF0000;">&quot;type_1&quot;</span>,<span style="color: #FF0000;">&quot;A&quot;</span><span class="br0">&#93;</span>,
            <span class="br0">&#91;</span><span style="color: #FF0000;">&quot;Bob&quot;</span>,   <span style="color: #FF0000;">&quot;type_2&quot;</span>,<span style="color: #FF0000;">&quot;B&quot;</span><span class="br0">&#93;</span>,
        <span class="br0">&#93;</span>
        headers = <span class="br0">&#91;</span><span style="color: #FF0000;">&quot;Nom&quot;</span>, <span style="color: #FF0000;">&quot;Type&quot;</span>,<span style="color: #FF0000;">&quot;Cat&eacute;gorie&quot;</span><span class="br0">&#93;</span>
&nbsp;
        self.model = SimpleModel<span class="br0">&#40;</span>data, headers<span class="br0">&#41;</span>
        self.view = QTableView<span class="br0">&#40;</span><span class="br0">&#41;</span>
        self.view.setModel<span class="br0">&#40;</span>self.model<span class="br0">&#41;</span>
&nbsp;
        <span style="color: #808080;"># Colonne 1 (index 1) devient un combo&#8209;box</span>
        self.view.setItemDelegateForColumn<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>, ComboDelegate<span class="br0">&#40;</span><span class="br0">&#91;</span><span style="color: #FF0000;">&quot;type_1&quot;</span>, <span style="color: #FF0000;">&quot;type_2&quot;</span>, <span style="color: #FF0000;">&quot;type_3&quot;</span>, <span style="color: #FF0000;">&quot;type_4&quot;</span>, <span style="color: #FF0000;">&quot;type_5&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span style="color: #808080;">#self.view.setItemDelegateForColumn(2, ComboDelegate([&quot;A&quot;, &quot;B&quot;, &quot;C&quot;, &quot;D&quot;, &quot;E&quot;, &quot;F&quot;]))</span>
&nbsp;
        self.setCentralWidget<span class="br0">&#40;</span>self.view<span class="br0">&#41;</span>
        self.setWindowTitle<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;ComboBox dans Items QTableView&quot;</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;"># ------------------------------------------------------------------</span>
<span style="color: #0000ff;">if</span> <span style="color: #0080ff;">__name__</span> == <span style="color: #FF0000;">&quot;__main__&quot;</span>:
    app = QApplication<span class="br0">&#40;</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
    win = MainWindow<span class="br0">&#40;</span><span class="br0">&#41;</span>
    win.resize<span class="br0">&#40;</span><span style="color: #cc66cc;">400</span>,<span style="color: #cc66cc;">200</span><span class="br0">&#41;</span>
    win.show<span class="br0">&#40;</span><span class="br0">&#41;</span>
    app.<span style="color: #0000ff;">exec</span><span class="br0">&#40;</span><span class="br0">&#41;</span></pre></td></tr></table></code><hr />
</div>Je n'arrive pas à placer une combo sur la troisième colonne. voir ligne 107. ça plante.<br />
Je ne comprend pas mon erreur. Peut être vaudrait-il mieux utiliser un QItemDelegate ?<br />
Quelqu'un peut-il m'aider ?<br />
Merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f172/autres-langages/python/gui/pyqt/">PyQt</category>
			<dc:creator>ptissendier</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183099/autres-langages/python/gui/pyqt/pyqt6-qstyleitemdelegate-combobox-ne-s-applique-qu-colonne/</guid>
		</item>
		<item>
			<title>Masquage onglet QTabWidget</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176309&amp;goto=newpost</link>
			<pubDate>Sun, 20 Apr 2025 14:14:06 GMT</pubDate>
			<description><![CDATA[Bonjour, 
 
J'ai une question...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
J'ai une question de débutant,<br />
<br />
J'utilise Qt Designer 5.15 avec Qgis et j'aimerais savoir s'il est possible de faire apparaitre, ou disparaitre un ou des onglets par rapport à une condition.<br />
Par exemple : <br />
si propriété &quot;pas moi&quot;, je masque les onglets 1, 2 et 3 et je laisse apparaitre l'onglet 4.<br />
Si propriété &quot;moi&quot;, je masque 4, et 1,2, et 3 sont visibles ?<br />
Merci d'avance de votre aide<br />
<br />
Marcopololo</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f172/autres-langages/python/gui/pyqt/">PyQt</category>
			<dc:creator>Marcopololo</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176309/autres-langages/python/gui/pyqt/masquage-onglet-qtabwidget/</guid>
		</item>
	</channel>
</rss>
