<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://entorb.net//wiki/index.php?action=history&amp;feed=atom&amp;title=Python_-_QT</id>
	<title>Python - QT - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://entorb.net//wiki/index.php?action=history&amp;feed=atom&amp;title=Python_-_QT"/>
	<link rel="alternate" type="text/html" href="https://entorb.net//wiki/index.php?title=Python_-_QT&amp;action=history"/>
	<updated>2026-05-06T10:27:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://entorb.net//wiki/index.php?title=Python_-_QT&amp;diff=4846&amp;oldid=prev</id>
		<title>Torben at 20:21, 30 October 2024</title>
		<link rel="alternate" type="text/html" href="https://entorb.net//wiki/index.php?title=Python_-_QT&amp;diff=4846&amp;oldid=prev"/>
		<updated>2024-10-30T20:21:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Coding]][[Category:Python]]&lt;br /&gt;
see [http://www.commandprompt.com/community/pyqt/]&lt;br /&gt;
==Basic Application==&lt;br /&gt;
 import sys&lt;br /&gt;
 from PyQt4 import QtGui&lt;br /&gt;
 from PyQt4.QtCore import SIGNAL&lt;br /&gt;
 from Ui_gui import Ui_MainWindow # load my QT Window ui, created by QT4-Designer + pyuic4&lt;br /&gt;
 &lt;br /&gt;
 class MainWindowGUI(QtGui.QMainWindow, Ui_ofetGUI):&lt;br /&gt;
   def __init__(self, parent=None):&lt;br /&gt;
     QtGui.QMainWindow.__init__(self, parent)&lt;br /&gt;
     self.setupUi(self)&lt;br /&gt;
 &lt;br /&gt;
     # connect qt-signals to functions&lt;br /&gt;
     self.connect(self.ButtonStart,SIGNAL(&amp;quot;clicked()&amp;quot;),self.clickedButtonStart) # ButtonStart is a name given by me&lt;br /&gt;
 &lt;br /&gt;
   def closeEvent(self, event): # define what to do when closing the window (e.g. via X-Button)&lt;br /&gt;
     &amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   def clickedButtonStart(self):&lt;br /&gt;
     &amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;: # ============= Starting Point&lt;br /&gt;
   app = QtGui.QApplication(sys.argv)&lt;br /&gt;
   mainWindow = MainWindowGUI()&lt;br /&gt;
   mainWindow.show()&lt;br /&gt;
   sys.exit(app.exec_())&lt;br /&gt;
&lt;br /&gt;
==Widgets==&lt;br /&gt;
====QPushButton====&lt;br /&gt;
=std. Buttons&lt;br /&gt;
 setEnabled(True)&lt;br /&gt;
 setEnabled(False)&lt;br /&gt;
 Signal: &amp;quot;clicked()&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====QCheckBox====&lt;br /&gt;
 setCheckState ( int )&lt;br /&gt;
 int checkState () == 2 : # 0=unchecked, 1=partly, 2=checked&lt;br /&gt;
&lt;br /&gt;
====QSpinBox====&lt;br /&gt;
enter int numbers&lt;br /&gt;
 setValue( int )&lt;br /&gt;
 int value()&lt;br /&gt;
&lt;br /&gt;
====QDoubleSpinBox====&lt;br /&gt;
enter float numbers&lt;br /&gt;
 setValue( float )&lt;br /&gt;
 float value()&lt;br /&gt;
 Signal: &amp;quot;valueChanged()&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====QLineEdit====&lt;br /&gt;
1-line textfield&lt;br /&gt;
 QString text ()&lt;br /&gt;
 setText ( String )&lt;br /&gt;
&lt;br /&gt;
====QLCDNumber====&lt;br /&gt;
 display(int)&lt;br /&gt;
 display(float)&lt;br /&gt;
&lt;br /&gt;
====QProcessBar====&lt;br /&gt;
 int value () const&lt;br /&gt;
 void setValue ( int value )&lt;br /&gt;
 &lt;br /&gt;
 int minimum () const&lt;br /&gt;
 void setMinimum ( int minimum )&lt;br /&gt;
 &lt;br /&gt;
 int maximum () const&lt;br /&gt;
 void setMaximum ( int maximum )&lt;br /&gt;
&lt;br /&gt;
====QLabel====&lt;br /&gt;
 setText( String )&lt;br /&gt;
&lt;br /&gt;
====QTableWidget====&lt;br /&gt;
 row = rowCount ()&lt;br /&gt;
 insertRow(row)&lt;br /&gt;
 while self.Table.rowCount () &amp;gt; 0:&lt;br /&gt;
   self.Table.removeRow(0)&lt;br /&gt;
 &lt;br /&gt;
 tItem = QtGui.QTableWidgetItem()&lt;br /&gt;
 tItem.setText( str( round(tA, 1) ))&lt;br /&gt;
 #tItem.setBackground (QtGui.QColor(&amp;quot;green&amp;quot;))&lt;br /&gt;
 setItem(row,column,tItem)&lt;br /&gt;
 # disable editing of table&lt;br /&gt;
 self.Table.setEditTriggers(QAbstractItemView.NoEditTriggers)&lt;br /&gt;
&lt;br /&gt;
====QMessageBox====&lt;br /&gt;
 if ( os.path.isfile( file ) ):&lt;br /&gt;
   reply = QMessageBox.warning(self,  # choose: (warning, about, critical, question)&lt;br /&gt;
                               &amp;quot;Output file already exists!&amp;quot;, # title&lt;br /&gt;
                               &amp;quot;Overwrite the file &amp;quot; + file + &amp;quot; ?&amp;quot;, # message text&lt;br /&gt;
                               QMessageBox.Yes|QMessageBox.No # choose: (Yes, No, Cancel, Ok)&lt;br /&gt;
                               )&lt;br /&gt;
   if reply != QMessageBox.Yes : # if not &amp;quot;Yes&amp;quot; cancel here&lt;br /&gt;
     return&lt;br /&gt;
&lt;br /&gt;
====File Dialog====&lt;br /&gt;
 myFileDialog = QtGui.QFileDialog(self)&lt;br /&gt;
 dirname = str ( myFileDialog.getExistingDirectory(self, &amp;#039;Open dir&amp;#039;, myVarStartDir) )&lt;br /&gt;
&lt;br /&gt;
==Signals==&lt;br /&gt;
 QObject.connect(self.ButtonStart, SIGNAL(&amp;quot;clicked()&amp;quot;),self.myFunction)&lt;br /&gt;
 &lt;br /&gt;
 # QThread notifies main gui:&lt;br /&gt;
 self.emit(SIGNAL(&amp;quot;MoinMoin&amp;quot;))&lt;br /&gt;
 # gui:&lt;br /&gt;
 QObject.connect(self.thread, SIGNAL(&amp;quot;MoinMoin&amp;quot;), self.myFunction)&lt;br /&gt;
 &lt;br /&gt;
 # QThread sends values to main gui&lt;br /&gt;
 # in Thread&lt;br /&gt;
 self.emit(SIGNAL(&amp;quot;temperatureChanged(PyQt_PyObject)&amp;quot;),[self.t1, self.t2])&lt;br /&gt;
 # main gui:&lt;br /&gt;
 QObject.connect(self.thread, SIGNAL(&amp;quot;temperatureChanged(PyQt_PyObject)&amp;quot;), self.temperatureChanged)&lt;br /&gt;
 # ...&lt;br /&gt;
 def temperatureChanged(self, temps):&lt;br /&gt;
   self.lcdTemp1.display(temps[0])&lt;br /&gt;
   self.lcdTemp2.display(temps[1])&lt;br /&gt;
&lt;br /&gt;
==Threads==&lt;br /&gt;
===Main File===&lt;br /&gt;
 # import my thread class MeasuringThread from file MeasuringThread&lt;br /&gt;
 from MeasuringThread import MeasuringThread&lt;br /&gt;
 &lt;br /&gt;
 self.thread = MeasuringThread(self) # give mainwindow as parameter to thread in order do be able to run its methods&lt;br /&gt;
 self.connect(self.thread,SIGNAL(&amp;quot;myUpdateSignal&amp;quot;),self.updateCalled)&lt;br /&gt;
 &lt;br /&gt;
 def updateCalled(self)&lt;br /&gt;
   &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now the thread can be started and stopped via&lt;br /&gt;
 self.thread.start() &lt;br /&gt;
 self.thread.stop()&lt;br /&gt;
&lt;br /&gt;
===Thread File===&lt;br /&gt;
 from PyQt4.QtCore import SIGNAL, QThread&lt;br /&gt;
 &lt;br /&gt;
 class MeasuringThread(QThread):&lt;br /&gt;
   # A thread is started by calling QThread.start() never by calling run() directly!&lt;br /&gt;
   def __init__(self, mainwindowUebergabe, parent = None):&lt;br /&gt;
     QThread.__init__(self, parent)&lt;br /&gt;
     self.MainWindow = mainwindowUebergabe&lt;br /&gt;
     self.exiting = False # custum variable that is used to stop the thread&lt;br /&gt;
 &lt;br /&gt;
   def stop(self):&lt;br /&gt;
     self.exiting = True&lt;br /&gt;
     self.wait() # waits until run stops on his own&lt;br /&gt;
 &lt;br /&gt;
   def run(self):&lt;br /&gt;
     self.exiting = False&lt;br /&gt;
     while self.exiting == False :&lt;br /&gt;
       &amp;quot;&amp;quot;&lt;br /&gt;
       self.emit(SIGNAL(&amp;quot;myUpdateSignal&amp;quot;)) # send a signal to the main window&lt;br /&gt;
     # exit position of run function of thread. if exiting == true we end up here&lt;br /&gt;
     &amp;quot;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Torben</name></author>
	</entry>
</feed>