Ita*_*son 1 python user-interface pyqt python-3.x pyqt5
所以假设我有这个 ui,它有 2 个空文本点要填充和一个“运行”按钮。
我想让 2 个空文本点转到程序中的某些值,并且运行按钮将基本上运行 python 'Main' 程序......
我怎样才能做到这一点 ?
在 PyQt5 中,QWidgets 模块提供了一组 UI 元素来创建经典的桌面风格的用户界面。小部件可以显示数据和状态信息,接收用户输入,并为应该组合在一起的其他小部件提供容器。没有嵌入到父小部件中的小部件称为窗口。父小部件包含各种子小部件。所以首先你开始为你的窗口编写代码
window=QtWidgets.QWidget()
Run Code Online (Sandbox Code Playgroud)
(QWidget 类是所有用户界面对象的基类)。创建窗口后,您需要为 UI 窗口设置布局。Qt 中有许多布局类,但最常见的是QVBoxLayout(垂直排列小部件。)和QHBoxLayout(水平排列小部件。)并且很多时候它们都用于制作自定义布局。现在创建你QVBoxLayout的
vbox=QWidgets.QVBoxLayout()
Run Code Online (Sandbox Code Playgroud)
(注意这里 vbox 只是一个变量名)。接下来是在窗口内放置小部件,可以这样做
text_1=QtWidgets.QLineEdit()
text_2=QtWidgets.QLineEdit()
run_btn=QtWidgets.QPushButton("run")
text_3=QtWidgets.QLineEdit()
Run Code Online (Sandbox Code Playgroud)
请注意,QPushButton我们可以将按钮的名称作为其参数(run在本例中为 ex- )。现在是事件和信号的时候了。为了将PushButton连接到一个函数,我们btn.clicked.connect(function_name)这里写的btn是我们的PushButton。注意这里function_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)))
Run Code Online (Sandbox Code Playgroud)
现在,在我们的main功能,我们首先从收集的数据text_1以及text_2(有一个text()对的方法QLineEdit来从QLineEdit的获取数据的str)。所以我们的main函数取两者的价值text_1和text_2并把它们(如果输入的值,它会抛出一个错误不能被转换成整数),并且值的集合text_3由setText()方法。
现在您必须将vbox我们之前创建的小部件打包为
vbox.addWidget(text_1)
vbox.addWidget(text_2)
vbox.addWidget(run_btn)
vbox.addWidget(text_3)
Run Code Online (Sandbox Code Playgroud)
现在将我们的窗口布局设置为
window.setLayout(vbox)
Run Code Online (Sandbox Code Playgroud)
并将窗口显示为
window.show()
Run Code Online (Sandbox Code Playgroud)
现在缺少一件事,那就是这条线
app=QtWidgets.QApplication(sys.argv)
Run Code Online (Sandbox Code Playgroud)
这一行是必要的,因为每个 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_())
Run Code Online (Sandbox Code Playgroud)
这将创建一个像这样的 UI 窗口:
希望能帮助到你。如有问题,请发表评论。快乐编码!