2017-05-03 3 views
1

これは非常に基本的なプログラムですが、私はGUIウィンドウで最終結果を表示する方法を理解したいですか?今私はそれが機能するかどうかをチェックするためにそれを印刷しています。私は関数 'counting'からの結果変数をどのように使用してinitGUI関数に入れ、それをユーザーに表示するのか分かりません。ここでPyQt5 - 非常に基本

は私のコードです:

import sys 
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QHBoxLayout, QInputDialog 


class Calculator(QWidget): 

    def __init__(self): 
     super().__init__() 

     self.initGUI() 


    def initGUI(self): 

     self.setGeometry(300, 300, 400, 300) 
     self.setWindowTitle('Calculator') 
     self.show() 

     layout = QHBoxLayout(self) 

     adding = QPushButton('Adding', self) 
     adding.clicked.connect(self.counting) 

     layout.addWidget(adding) 

     self.setLayout(layout) 

    def counting(self): 

     num1, ok=QInputDialog.getInt(None, 'Type first value', 'here') 
     num2, ok=QInputDialog.getInt(None, 'Type second value', 'here') 
     result = num1 + num2 
     print(result) 



if __name__=='__main__': 
    app = QApplication(sys.argv) 
    ex = Calculator() 
    sys.exit(app.exec_())` 

任意のアドバイスはありますか?ここでQInputDialogを使用すべきですか、それともより良い解決策がありますか?

答えて

0

QInputDialogではなく、QLineEditを使用します。私はそれをメインウィジェットのラベルに書き戻します。それと同様に

import sys 
from PyQt5.QtWidgets import * 

class Calculator(QWidget): 
    first = 0 
    second = 0 

    def __init__(self, parent=None): 
     super(Calculator, self).__init__(parent) 

     self.setGeometry(300, 300, 400, 300) 
     self.setWindowTitle('Calculator') 

     layout = QHBoxLayout(self) 

     firstButton = QPushButton('Get first', self) 
     firstButton.clicked.connect(self.get_first) 

     secondButton = QPushButton('Get Second', self) 
     secondButton.clicked.connect(self.get_second) 

     thirdButton = QPushButton('Get Both', self) 
     thirdButton.clicked.connect(self.get_both) 

     layout.addWidget(firstButton) 
     layout.addWidget(secondButton) 
     layout.addWidget(thirdButton) 

     self.resultLabel = QLabel() 
     layout.addWidget(self.resultLabel) 

     self.setLayout(layout) 

    def get_first(self): 
     num1, ok=QInputDialog.getInt(self, 'Type first value', 'here') 
     if ok and num1: 
      self.first = num1 
     self.resultLabel.setText(str(self.first+self.second)) 

    def get_second(self): 
     num2, ok = QInputDialog.getInt(self, 'Type second value', 'here') 
     if ok and num2: 
      self.second = num2 
     self.resultLabel.setText(str(self.first + self.second)) 

    def get_both(self): 
     self.get_first() 
     self.get_second() 

if __name__=='__main__': 
    app = QApplication(sys.argv) 
    ex = Calculator() 
    ex.show() 
    sys.exit(app.exec_()) 
関連する問題