2017-01-29 5 views
0

J'ai ce numpad, je voudrais faire chaque bouton numéroté pour écrire son numéro correspondant sur la ligne ci-dessus. Par exemple si j'entre 1234 en appuyant sur les boutons la même séquence à afficher sur la ligne. J'utilise pyqt4 avec le concepteur QT. La ligne ci-dessus est un QlineEdit, j'importe le fichier .ui directement dans le script python je ne le convertis pas en utilisant pyuic4. quelqu'un peut-il m'aider à trouver une solution à cela? Je suis nouveau sur python, j'ai commencé il y a 3 mois. Mercicomment affecter une clé (QtCore.Qt.Key_1) à un bouton en python. un pavé numérique

class MyWindow(QtGui.QMainWindow): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     file_path = os.path.abspath("ui/sales_window.ui") 
     uic.loadUi(file_path, self) 
+0

S'il vous plaît modifier votre question et ajouter le fichier ui complet. – ekhumoro

+0

je ne peux pas le télécharger, il a 30000 + caractères, et cette page a une limite sur 30k –

+0

Okay. Vous pouvez utiliser un lien [pastebin] (http://pastebin.com/) à la place. – ekhumoro

Répondre

0

La première étape consiste à créer un groupe de boutons pour le pavé numérique.

Dans Qt Designer, cliquez sur l'un des boutons, puis sur Ctrl + clic sur tous les autres boutons du pavé numérique pour qu'ils soient tous sélectionnés (douze boutons au total). Maintenant, cliquez avec le bouton droit sur l'un des boutons et sélectionnez Affecter au groupe de boutons> Nouveau groupe de boutons dans le menu. Ensuite, enregistrez le fichier d'interface utilisateur.

Vous pouvez maintenant ajouter un gestionnaire à votre script principal pour contrôler les boutons:

class MyWindow(QtGui.QMainWindow): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     file_path = os.path.abspath("aaa.ui") 
     uic.loadUi(file_path, self) 
     self.barcode_src_line.setReadOnly(True) 
     self.buttonGroup.buttonClicked.connect(self.handleButtons) 

    def handleButtons(self, button): 
     char = str(button.text()) 
     if char == 'C': 
      self.barcode_src_line.clear() 
     else: 
      text = str(self.barcode_src_line.text()) or '0' 
      if char != '.' or '.' not in text: 
       if text != '0' or char == '.': 
        text += char 
       else: 
        text = char 
       self.barcode_src_line.setText(text) 

Cela fonctionne comme une calculatrice normale. Si vous voulez un comportement différent, vous pouvez bien sûr réécrire handleButtons comme vous le souhaitez.

+0

1000 merci, si jamais vous passez ma ville, je vais vous acheter des boissons. le code fonctionne comme j'en ai besoin. je suis très reconnaissant –

0

Vous devriez jeter un oeil à la Calculator Builder example dans la documentation de Qt, il explique comment vous pouvez gérer les fichiers chargés ui lorsque vous ne l'utilisez uic sur eux.

C'est en C++ mais montre la technique de base.

+0

merci pour le lien, le problème est que je ne sais pas C++, je vais essayer d'étudier votre lien, mais je voudrais apreciate si vous pouviez commencer avec un exemple dans python. et btw le lien montre une calculatrice, je n'ai pas besoin d'une calculatrice ce clavier va entrer une chaîne numérique. –