Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt:将按钮链接到程序中的函数_Python_Python 3.x_User Interface_Pyqt_Pyqt5 - Fatal编程技术网

Python PyQt:将按钮链接到程序中的函数

Python PyQt:将按钮链接到程序中的函数,python,python-3.x,user-interface,pyqt,pyqt5,Python,Python 3.x,User Interface,Pyqt,Pyqt5,假设我有一个ui,它有两个空白的文本点要填充,还有一个“运行”按钮 我想让2个空文本点转到程序中的一些值,运行按钮基本上运行python“Main”程序 如何才能做到这一点?在PyQt5中,QWidgets模块提供了一组UI元素来创建经典的桌面风格用户界面。小部件可以显示数据和状态信息,接收用户输入,并为其他应分组在一起的小部件提供容器。未嵌入父窗口小部件的小部件称为窗口。包含各种子窗口小部件的父窗口小部件。因此,首先您开始为您的窗口编写代码,如下所示: window=QtWidgets.QWi

假设我有一个ui,它有两个空白的文本点要填充,还有一个“运行”按钮

我想让2个空文本点转到程序中的一些值,运行按钮基本上运行python“Main”程序


如何才能做到这一点?

在PyQt5中,QWidgets模块提供了一组UI元素来创建经典的桌面风格用户界面。小部件可以显示数据和状态信息,接收用户输入,并为其他应分组在一起的小部件提供容器。未嵌入父窗口小部件的小部件称为窗口。包含各种子窗口小部件的父窗口小部件。因此,首先您开始为您的窗口编写代码,如下所示:

window=QtWidgets.QWidget()
window.show()
QWidget类是所有用户界面对象的基类。创建窗口后,您需要为UI窗口设置布局。Qt中有许多用于布局的类,但最常见的是QVBOxlayoutt,用于垂直排列小部件。和QHBoxLayoutto水平排列小部件。很多时候,它们都被用于定制布局。现在将QVBoxLayout创建为

请注意,vbox只是一个变量名。下一步是将小部件放在窗口中,可以按如下操作

text_1=QtWidgets.QLineEdit()
text_2=QtWidgets.QLineEdit()
run_btn=QtWidgets.QPushButton("run")
text_3=QtWidgets.QLineEdit()
注意,在QPushButton中,在本例中,我们可以将按钮的名称作为argumentex运行。现在是事件和信号的时候了。 要将按钮连接到函数,我们将btn.clicked.connectfunction_name写入此处btn是我们的按钮。请注意,此处函数_name没有括号,这意味着我们没有调用该函数,当用户单击按钮执行函数时,只需将按钮连接到函数

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)))
现在,在我们的主函数中,我们首先从text_1和text_2收集数据,QLineEdit有一个text方法将数据作为str从QLineEdit获取。因此,我们的主函数获取text_1和text_2的值,并将它们相加。如果输入的值无法转换为整数,则会产生错误,并通过将该值设置为text_3setText方法

现在,您必须将小部件打包到我们的vbox中,我们在前面创建了它

vbox.addWidget(text_1)
vbox.addWidget(text_2)
vbox.addWidget(run_btn)
vbox.addWidget(text_3)
现在将窗口的布局设置为

window.setLayout(vbox)
并将窗口显示为

window=QtWidgets.QWidget()
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窗口如下所示:

希望能有帮助。 如果有问题,请发表评论。
快乐编码

在PyQt5中,QWidgets模块提供了一组UI元素来创建经典的桌面风格用户界面。小部件可以显示数据和状态信息,接收用户输入,并为其他应分组在一起的小部件提供容器。未嵌入父窗口小部件的小部件称为窗口。包含各种子窗口小部件的父窗口小部件。因此,首先您开始为您的窗口编写代码,如下所示:

window=QtWidgets.QWidget()
window.show()
QWidget类是所有用户界面对象的基类。创建窗口后,您需要为UI窗口设置布局。Qt中有许多用于布局的类,但最常见的是QVBOxlayoutt,用于垂直排列小部件。和QHBoxLayoutto水平排列小部件。很多时候,它们都被用于定制布局。现在将QVBoxLayout创建为

请注意,vbox只是一个变量名。下一步是将小部件放在窗口中,可以按如下操作

text_1=QtWidgets.QLineEdit()
text_2=QtWidgets.QLineEdit()
run_btn=QtWidgets.QPushButton("run")
text_3=QtWidgets.QLineEdit()
注意,在QPushButton中,在本例中,我们可以将按钮的名称作为argumentex运行。现在是事件和信号的时候了。 要将按钮连接到函数,我们将btn.clicked.connectfunction_name写入此处btn是我们的按钮。请注意,此处函数_name没有括号,这意味着我们没有调用该函数,当用户单击按钮执行函数时,只需将按钮连接到函数

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)))
现在,在我们的主函数中,我们首先从text_1和text_2收集数据,QLineEdit有一个text方法将数据作为str从QLineEdit获取。因此,我们的主函数获取text_1和text_2的值,并将它们相加。如果输入的值无法转换为整数,则会产生错误,并通过将该值设置为text_3setText方法

现在,您必须将小部件打包到我们的vbox中,我们在前面创建了它

vbox.addWidget(text_1)
vbox.addWidget(text_2)
vbox.addWidget(run_btn)
vbox.addWidget(text_3)
现在将窗口的布局设置为

window.setLayout(vbox)
并将窗口显示为

window=QtWidgets.QWidget()
window.show()
到目前为止,有一件事是遗漏的,那就是线路

app=QtWidgets.QApplication(sys.argv)
这一行是必需的,因为每个PyQt5应用程序都必须创建一个应用程序对象。sys.argv参数是一个列表 f命令行中的参数。 现在我们必须创建应用程序的主循环。事件处理从这一点开始。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窗口如下所示:

希望能有帮助。 如果有问题,请发表评论。
快乐编码

遵循以下示例代码,但使用getText方法从文本框中获取文本。遵循以下示例代码,但使用getText方法从文本框中获取文本。你能解释一下你在这里写了什么吗?我真的不擅长编码。。。我不知道你写了什么亲爱的@ItayKatsnelson我已经把我的代码编辑成了一个解释得很好的答案,如果有任何困难,请发表评论:非常感谢,这对我帮助很大,但我刚刚意识到我在PyQt4上。。是否有任何差异,或者我应该安装PyQt5并遵循您的代码?非常感谢!PyQt5和PyQt4之间存在差异,如果您是初学者,则必须从PyQt5@Tarpaeya好的,我理解你写的代码,我只是理解文本3的功能,以及文本3的第三行。。。只想让run按钮运行我的主程序/文件,其他两个文本进入参数…你怎么能用你在这里写的东西做到这一点?你能解释一下你在这里写的东西吗?我真的不擅长编码。。。我不知道你写了什么亲爱的@ItayKatsnelson我已经把我的代码编辑成了一个解释得很好的答案,如果有任何困难,请发表评论:非常感谢,这对我帮助很大,但我刚刚意识到我在PyQt4上。。是否有任何差异,或者我应该安装PyQt5并遵循您的代码?非常感谢!PyQt5和PyQt4之间存在差异,如果您是初学者,则必须从PyQt5@Tarpaeya好的,我理解你写的代码,我只是理解文本3的功能,以及文本3的第三行。。。只需要运行按钮来运行我的主程序/文件和其他两个文本进入参数…你怎么能用你在这里写的东西做到这一点?