2015-09-06 43 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