2017-01-29 14 views
0

私はこれをnumpadとしています。数字のついたすべてのボタンを、上の行に対応する数字を書くようにしたいと思います。例えば、私が1234を入力すると、ボタン上にその行を表示するために同じシーケンスが表示されます。私はqtデザイナーとpyqt4を使用しています。 上記の行はQlineEditです。私はPythonスクリプトで直接.uiファイルをインポートします。pyuic4を使用して変換しません。誰かがこれに対する解決策を見つけるのを助けることができますか?私は3ヶ月前に始まったPythonには新しいです。あなたはPythonのボタンにキー(QtCore.Qt.Key_1)を割り当てる方法数字パッド

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

あなたの質問を編集し、完全なuiファイルを追加してください。 – ekhumoro

+0

私はそれをアップロードすることはできません、それは30000 +文字を持っており、このページは30kに制限があります –

+0

大丈夫です。代わりに[pastebin](http://pastebin.com/)リンクを使用することができます。 – ekhumoro

答えて

0

最初の手順は、数字パッド用のボタングループを作成することです。

Qt Designerでは、いずれかのボタンをクリックしてから、数字パッドの他のすべてのボタンをCtrl +クリックすると、すべてが選択されます(全部で12個のボタン)。いずれかのボタンを右クリックし、メニューからボタングループに割り当て>新規ボタングループを選択します。次に、uiファイルを保存します。

あなたは今、ボタンを制御するために、あなたのメインのスクリプトにハンドラを追加することができます。

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) 

これは、通常の電卓のように動作します。あなたが違う振る舞いをしたいのであれば、好きな方法でhandleButtonsを書き直すことができます。

+0

1000おかげさまで、私の街を通り過ぎたら、私はあなたにいくつかの飲み物を買うでしょう。コードは私が必要とするように動作します。私は非常に感謝しています –

0

あなたはそれはあなたがそれらにUICを使用しないときは、UIロードされたファイルを扱うことができる方法を説明QtのドキュメントにCalculator Builder exampleを見てみる必要がありますありがとうございました。

これはC++で書かれていますが、基本的なテクニックを示しています。

+0

がありがとうございます。問題は私がC++を知っていないことです。あなたのリンクを調査しようとしますが、 Python。 btwは電卓を表示していますが、電卓が必要ではありません。このキーボードは数字の文字列を入力します。 –

関連する問題