如何使用 PyQt4 添加提交、输出和输入框?
How can I add a submit, output and input box using PyQt4?
我从未尝试过使用 Java 以外的语言创建 GUI(不久前有点把它放在一边)
并开始使用 Python。
制作了一个简单的程序,可以根据用户的意愿将 Pi 计算到某个数字。
现在,我用 PyQt4 创建了一个 window,制作了一个按钮,一切就绪。
我如何添加一个输入框,以便用户可以在其中输入数字,使按钮 "Enter" 成为信息,并在所有输出结束时将其输出到 window航站楼?
这就是我现在得到的:
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 函数。
谢谢! :)
您几乎拥有所有内容,只需在显示结果的位置添加一个 QLineEdit
to get the input and a QLabel
(使用 QLabel.setText
)。
您可能希望对数字使用 QLineEdit 或 QSpinBox。如果您想要在一个小部件中包含多个内容,您可以使用布局。 QMainWindow 通常有一个中央小部件以及工具栏和停靠小部件。
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_())
我从未尝试过使用 Java 以外的语言创建 GUI(不久前有点把它放在一边) 并开始使用 Python。 制作了一个简单的程序,可以根据用户的意愿将 Pi 计算到某个数字。 现在,我用 PyQt4 创建了一个 window,制作了一个按钮,一切就绪。
我如何添加一个输入框,以便用户可以在其中输入数字,使按钮 "Enter" 成为信息,并在所有输出结束时将其输出到 window航站楼?
这就是我现在得到的:
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 函数。 谢谢! :)
您几乎拥有所有内容,只需在显示结果的位置添加一个 QLineEdit
to get the input and a QLabel
(使用 QLabel.setText
)。
您可能希望对数字使用 QLineEdit 或 QSpinBox。如果您想要在一个小部件中包含多个内容,您可以使用布局。 QMainWindow 通常有一个中央小部件以及工具栏和停靠小部件。
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_())