Ici la même fenêtre mais avec un icône sur chaque bouton, de quoi enjoliver la vie.
Code: Select all
# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def __init__(self, MainWindow):
self.window = MainWindow
# path = FreeCAD.ConfigGet("UserAppData")
path = FreeCAD.ConfigGet("AppHomePath")
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(400, 300)
self.centralWidget = QtGui.QWidget(MainWindow)
self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
self.pushButton = QtGui.QPushButton(self.centralWidget)
self.pushButton.setGeometry(QtCore.QRect(30, 170, 93, 28))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.pushButton.clicked.connect(self.on_pushButton_clicked) #connection pushButton
self.lineEdit = QtGui.QLineEdit(self.centralWidget)
self.lineEdit.setGeometry(QtCore.QRect(30, 40, 211, 22))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.lineEdit.returnPressed.connect(self.on_lineEdit_clicked) #connection lineEdit
self.checkBox = QtGui.QCheckBox(self.centralWidget)
self.checkBox.setGeometry(QtCore.QRect(30, 90, 100, 20))
self.checkBox.setChecked(True)
self.checkBox.setObjectName(_fromUtf8("checkBoxON"))
self.checkBox.clicked.connect(self.on_checkBox_clicked) #connection checkBox
self.radioButton = QtGui.QRadioButton(self.centralWidget)
self.radioButton.setGeometry(QtCore.QRect(30, 130, 95, 20))
self.radioButton.setObjectName(_fromUtf8("radioButton"))
self.radioButton.clicked.connect(self.on_radioButton_clicked) #connection radioButton
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtGui.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 400, 26))
self.menuBar.setObjectName(_fromUtf8("menuBar"))
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QtGui.QToolBar(MainWindow)
self.mainToolBar.setObjectName(_fromUtf8("mainToolBar"))
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
self.statusBar = QtGui.QStatusBar(MainWindow)
self.statusBar.setObjectName(_fromUtf8("statusBar"))
MainWindow.setStatusBar(self.statusBar)
self.retranslateUi(MainWindow)
# Affiche un icône sur le bouton PushButton
# self.image_01 = "C:\Program Files\FreeCAD0.13\icone01.png" # adapter le nom de l'icône
self.image_01 = path+"icone01.png" # adapter le nom de l'icône
icon01 = QtGui.QIcon()
icon01.addPixmap(QtGui.QPixmap(self.image_01),QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.pushButton.setIcon(icon01)
self.pushButton.setLayoutDirection(QtCore.Qt.RightToLeft) # cette commande inverse la direction du bouton
# Affiche un icône sur le bouton RadioButton
# self.image_02 = "C:\Program Files\FreeCAD0.13\icone02.png" # adapter le nom de l'icône
self.image_02 = path+"icone02.png" # adapter le nom de l'icône
icon02 = QtGui.QIcon()
icon02.addPixmap(QtGui.QPixmap(self.image_02),QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.radioButton.setIcon(icon02)
# self.radioButton.setLayoutDirection(QtCore.Qt.RightToLeft) # cette commande inverse la direction du bouton
# Affiche un icône sur le bouton CheckBox
# self.image_03 = "C:\Program Files\FreeCAD0.13\icone03.png" # adapter le nom de l'icône
self.image_03 = path+"icone03.png" # adapter le nom de l'icône
icon03 = QtGui.QIcon()
icon03.addPixmap(QtGui.QPixmap(self.image_03),QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.checkBox.setIcon(icon03)
# self.checkBox.setLayoutDirection(QtCore.Qt.RightToLeft) # cette commande inverse la direction du bouton
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "FreeCAD", None))
self.pushButton.setText(_translate("MainWindow", "OK", None))
self.lineEdit.setText(_translate("MainWindow", "tyty", None))
self.checkBox.setText(_translate("MainWindow", "CheckBox", None))
self.radioButton.setText(_translate("MainWindow", "RadioButton", None))
def on_checkBox_clicked(self):
if self.checkBox.checkState()==0:
App.Console.PrintMessage(str(self.checkBox.checkState())+" CheckBox KO\r\n")
else:
App.Console.PrintMessage(str(self.checkBox.checkState())+" CheckBox OK\r\n")
# App.Console.PrintMessage(str(self.lineEdit.setText("tititi"))+" LineEdit\r\n") #écrit le texte dans la fenêtre lineEdit !
# str(self.lineEdit.setText("tititi")) #écrit le texte dans la fenêtre lineEdit
App.Console.PrintMessage(str(self.lineEdit.displayText())+" LineEdit\r\n")
def on_radioButton_clicked(self):
if self.radioButton.isChecked():
App.Console.PrintMessage(str(self.radioButton.isChecked())+" Radio OK\r\n")
else:
App.Console.PrintMessage(str(self.radioButton.isChecked())+" Radio KO\r\n")
def on_lineEdit_clicked(self):
# if self.lineEdit.textChanged():
App.Console.PrintMessage(str(self.lineEdit.displayText())+" LineEdit Display\r\n")
def on_pushButton_clicked(self):
App.Console.PrintMessage("Terminé\r\n")
self.window.hide()
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow(MainWindow)
MainWindow.show()
ici le code pour afficher l'icône sur le
pushButton, modifiez le nom pour un autre bouton, (
radioButton, checkBox) ainsi que le chemin de l'icône,
Code: Select all
# Affiche un icône sur le bouton PushButton
# self.image_01 = "C:\Program Files\FreeCAD0.13\icone01.png" # adapter le nom de l'icône
self.image_01 = path+"icone01.png" # adapter le nom de l'icône
icon01 = QtGui.QIcon()
icon01.addPixmap(QtGui.QPixmap(self.image_01),QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.pushButton.setIcon(icon01)
self.pushButton.setLayoutDirection(QtCore.Qt.RightToLeft) # cette commande inverse la direction du bouton
la commande
UserAppData donne le chemin utilisateur
AppHomePath donne le chemin d'installation de FreeCAD
Code: Select all
# path = FreeCAD.ConfigGet("UserAppData")
path = FreeCAD.ConfigGet("AppHomePath")
# Cette commande inverse le sens horizontal du bouton, droite à gauche
Code: Select all
self.pushButton.setLayoutDirection(QtCore.Qt.RightToLeft) # cette commande inverse la direction du bouton
# affiche une info sur le bouton
Code: Select all
self.pushButton.setToolTip(_translate("MainWindow", "Quitter la fonction", None)) # affiche une info sur le bouton
#cette fonction donne une couleur au bouton
Code: Select all
self.pushButton.setStyleSheet("background-color: red") #cette fonction donne une couleur au bouton
#cette fonction donne une couleur au texte du bouton
Code: Select all
self.pushButton.setStyleSheet("color : #ff0000") #cette fonction donne une couleur au texte du bouton
#combinaison des deux, bouton et texte
Code: Select all
self.pushButton.setStyleSheet("color : #ff0000; background-color : #0000ff;" ) #combinaison des deux, bouton et texte
#remplacer l'icône de la fenêtre principale
Code: Select all
MainWindow.setWindowIcon(QtGui.QIcon('C:\Program Files\FreeCAD0.13\View-C3P.png'))
# connecte une lineEdit sur execute
Code: Select all
self.lineEdit.returnPressed.connect(self.execute) #connecte le lineEdit après validation sur entrée
# self.lineEdit.textChanged.connect(self.execute) #connecte le lineEdit à chaque frappe sur le clavier
# afficher un texte dans une lineEdit
Code: Select all
self.lineEdit.setText(str(val_X)) # affiche la valeur dans lineEdit (convertir en string)
# extraire la chaine contenue dans une lineEdit
Code: Select all
val_X = self.lineEdit.text() # extrait la chaine (string) contenue dans lineEdit
# extraire la valeur d'un SpinBox
Code: Select all
numberSpires = self.DS_Numb_Spires.value()
# ce code permet de changer la police de caractère et ses attributs
Code: Select all
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(10)
font.setWeight(10)
font.setBold(True) # même résultat avec les balises "<b>votre texte</b>" (dans les guillemets)
self.label_6.setFont(font)
self.label_6.setObjectName("label_6")
self.label_6.setStyleSheet("color : #ff0000") #cette fonction donne une couleur au texte
self.label_6.setText(_translate("MainWindow", "Sélectionnez une vue", None))
#fonctions pour obtenir la date et l'heure système
Code: Select all
def heure():
return QtCore.QTime().currentTime().toString('hh:mm:ss') # heure:minutes:secondes
def dateEu():
return QtCore.QDate().currentDate().toString('dd/MM/yyyy') # date forme euro jour/mois/année
def dateUs():
return QtCore.QDate().currentDate().toString('yyyy/MM/dd') # date forme us
def dateComp():
return QtCore.QDate().currentDate().toString('dddd d MMMM yyyy') # Retourne "dimanche 20 Juillet 69" (on peut jouer avec le format ex:dd MM yyy.....)
Dans le cas ou vous obtenez l'erreur :
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-2: invalid data
# conversion à partir d'une lineEdit
Code: Select all
# conversion à partir d'une lineEdit
App.activeDocument().CopyRight.Text = str(unicode(self.lineEdit_20.text() , 'ISO-8859-1').encode('UTF-8'))
DESIGNED_BY = unicode(self.lineEdit_01.text(), 'ISO-8859-1').encode('UTF-8')
ou avec la procédure
Code: Select all
def utf8(unio):
return unicode(unio).encode('UTF8')
ou l'erreur
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 9: ordinal not in range(128)
Code: Select all
# conversion
a = u"Nom de l'élément : "
f.write(a.encode('iso-8859-1')+str(element_)+"\n")
ou avec la procédure
Code: Select all
def iso8859(encoder):
return unicode(encoder).encode('iso-8859-1')
ou
ou
ou
Code: Select all
uniteSs = "mm"+iso8859(unichr(178))
print unicode(uniteSs, 'iso8859')
[EDIT :05/02/2015 ] ajout de "Extraire la valeur d'un SpinBox"
[EDIT :03/05/2013 ] ajout de Dans le cas ou vous obtenez l'erreur : UnicodeDecodeError: 'utf8'
[EDIT :04/09/2013 ] ajout de Dans le cas ou vous obtenez l'erreur : UnicodeEncodeError: 'ascii'
[EDIT :04/11/2013 ] ajout de uniteSs = "mm"+iso8859(unichr(178))
mario