2017-02-15 84 views
0

因此,让我们说我有这个用户界面有2个空的文本点来填补和'运行'按钮。PyQt:将按钮链接到我的程序中的功能

我想让它的2个空的文本点去一些值在程序和运行按钮将基本运行蟒蛇“主”计划......

我该怎么办呢?

+0

请遵循以下示例代码,但使用getText()方法从文本框中提取文本。 https://pythonspot.com/en/pyqt4-textbox/ –

回答

0

在PyQt5中,QWidgets模块提供了一组UI元素来创建经典桌面风格的用户界面。小部件可以显示数据和状态信息,接收用户输入,并为应该组合在一起的其他小部件提供容器。未嵌入在父控件窗口小部件被称为包含各种孩子window.A父部件widgets.So首先你开始写你的窗口

window=QtWidgets.QWidget() 

代码(QWidget的类是基类所有用户界面对象)。一旦你的窗口被创建,你需要为你的UI窗口设置一个布局。有很多类在Qt的布局,但最常见的是QVBoxLayout(垂直对齐部件)和QHBoxLayout(在水平方向排队部件。)和许多它们都被用于制作自定义布局的时间。现在创建您的QVBoxLayout

vbox=QWidgets.QVBoxLayout() 

(注意这里说VBOX是一个变量名)。接下来的事情就是把它可以做到

text_1=QtWidgets.QLineEdit() 
text_2=QtWidgets.QLineEdit() 
run_btn=QtWidgets.QPushButton("run") 
text_3=QtWidgets.QLineEdit() 

注意窗口内的小部件,在QPushButton我们可以将该按钮的名称作为其参数(在这种情况下,不包括run)。现在是事件和信号的时间。 到按钮连接到一个功能,我们写btn.clicked.connect(function_name)这里btn是我们PushButton.Note这里说的函数名是没有括号,这意味着我们不叫功能,只需连接的按钮功能(当用户点击按钮的功能被执行).Foramlly这可以写成

run_btn=QtWidgets.QPushButton("run") 
def main(): 
    data_1=text_1.text() 
    data_2=text_2.text() 
    text_3.setText(str(int(data_1)+int(data_2))) 

现在我们main功能,我们首先从text_1text_2收集的数据(也就是为QLineEdit一个text()方法从QLineEdit的获得数据作为str)。因此,我们的main函数取值为text_1text_2并把它们(它会产生一个错误,如果输入的值不能被转换成整数),并通过setText()方法设置该值到text_3

现在你得收拾我们vbox我们前面创建的

vbox.addWidget(text_1) 
vbox.addWidget(text_2) 
vbox.addWidget(run_btn) 
vbox.addWidget(text_3) 

现在设置我们窗口的布局

window.setLayout(vbox) 

,并显示出该窗口

小部件
window.show() 

现在有一样东西丢失了,那就是行

app=QtWidgets.QApplication(sys.argv) 

这行是必需的,因为每个PyQt5应用程序都必须创建一个应用程序对象。 sys.argv参数是来自命令行的参数列表。 现在我们必须创建应用程序的主循环。事件处理从这一点开始。 app.exec_()方法运行我们的应用程序,然后提供一个干净的退出。

现在把所有在一起:

import sys 
from PyQt5 import QtWidgets 

app=QtWidgets.QApplication(sys.argv) 
window=QtWidgets.QWidget() 
vbox=QtWidgets.QVBoxLayout() 
text_1=QtWidgets.QLineEdit() 
text_2=QtWidgets.QLineEdit() 
run_btn=QtWidgets.QPushButton("run") 
text_3=QtWidgets.QLineEdit() 
def main(): 
    data_1=text_1.text() 
    data_2=text_2.text() 
    text_3.setText(str(int(data_1)+int(data_2))) 
run_btn.clicked.connect(main) 
vbox.addWidget(text_1) 
vbox.addWidget(text_2) 
vbox.addWidget(run_btn) 
vbox.addWidget(text_3) 
window.setLayout(vbox) 
window.show() 
sys.exit(app.exec_()) 

这将使UI窗口是这样的:

enter image description here

希望它能帮助。 请在有问题的情况下做评论。 快乐编码!

+0

你能解释你在这里写的是什么吗?我真的不好在编码...我不知道你在写什么 –

+0

亲爱的@ItayKatsnelson我编辑了我的代码给一个很好解释的答案,请做任何困难的情况下评论:) – Tarptaeya

+0

非常感谢,它帮助了我很多,但我只是在PyQt4上实现了即时通讯。是否有任何差异,或者我应该安装PyQt5并遵循你的代码?非常感谢 ! –