2015-09-06 64 views
0

我從來沒有試過用Java以外的語言創建一個GUI(有點不久之前就把它留在了一邊) 並開始使用Python。 提供了一個簡單的程序,可以根據用戶的需要計算Pi到某個數字。 現在,我使用PyQt4創建了一個窗口,製作了一個按鈕,並將所有內容都安裝到位。如何使用PyQt4添加提交,輸出和輸入框?

如何添加一個輸入框,以便用戶可以在其中輸入數字,使按鈕「輸入」信息,並在所有輸出到窗口而不是終端輸出結束?

這就是我已經得到了現在:

import sys 
from PyQt4 import QtGui 
from PyQt4 import QtCore 
from decimal import * 

class Window(QtGui.QMainWindow): 

    def __init__(self): 
     super(Window, self).__init__() 
     self.setGeometry(50, 50, 800, 600) 
     self.setWindowTitle("Pi's Nth Digit") 
     self.setWindowIcon(QtGui.QIcon('icon.jpg')) 
     self.buttons() 

    def buttons(self): 
     btn = QtGui.QPushButton("Quit",self) 
     btn1 = QtGui.QPushButton("Get Pi",self) 
     btn.clicked.connect(QtCore.QCoreApplication.instance().quit) 
     btn1.clicked.connect(self.getpi()) 
     btn1.resize(btn1.sizeHint()) 
     btn.resize(btn.sizeHint()) 
     btn1.move(350,500) 
     btn.move(450,500) 
     self.show() 

def start(): 
    app = QtGui.QApplication(sys.argv) 
    GUI = Window() 
    sys.exit(app.exec_()) 

start() 

不介意getpi功能。 謝謝! :)

回答

1

你會想要爲一個數字使用QLineEdit或QSpinBox。如果你想在一個小部件中有多個東西,你可以使用一個佈局。 QMainWindow通常具有一箇中心小部件和工具欄以及Dock部件。

class Window(QtGui.QMainWindow): 
    def __init__(self): 
     super().__init__() 

     self.container = QtGui.QWidget() 
     self.setCentralWidget(self.container) 
     self.container_lay = QtGui.QVBoxLayout() 
     self.container.setLayout(self.container_lay) 

     # Input 
     self.le = QtGui.QLineEdit() 
     self.container_lay.addWidget(self.le) 

     # enter button 
     self.enter_btn = QtGui.QPushButton("Enter") 
     self.container_lay.addWidget(self.enter_btn) 
     self.enter_btn.clicked.connect(self.run) # No '()' on run you want to reference the method. 

     # display 
     self.container_lay.addWidget(QtGui.QLabel("Answer:")) 
     self.ans = QtGui.QLabel() 
     self.container_lay.addWidget(self.ans) 

    def run(self): 
     precision = self.le.text() 
     pi = str(round(math.pi, precision)) # probably different formatting 
     self.ans.setText(pi) 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 

    window = Window() 
    window.show() 

    sys.exit(app.exec_()) 
1

你幾乎所有東西,只需添加一個QLineEdit得到輸入和一個QLabel在哪裏顯示結果(與QLabel.setText)。

+0

非常感謝,這將幫助我很多項目:) – AlphaOmega

+0

@AlphaOmega不客氣! – cdonts