因此,让我们说我有这个用户界面有2个空的文本点来填补和'运行'按钮。PyQt:将按钮链接到我的程序中的功能
我想让它的2个空的文本点去一些值在程序和运行按钮将基本运行蟒蛇“主”计划......
我该怎么办呢?
因此,让我们说我有这个用户界面有2个空的文本点来填补和'运行'按钮。PyQt:将按钮链接到我的程序中的功能
我想让它的2个空的文本点去一些值在程序和运行按钮将基本运行蟒蛇“主”计划......
我该怎么办呢?
在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_1
和text_2
收集的数据(也就是为QLineEdit
一个text()
方法从QLineEdit的获得数据作为str
)。因此,我们的main
函数取值为text_1
和text_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窗口是这样的:
希望它能帮助。 请在有问题的情况下做评论。 快乐编码!
你能解释你在这里写的是什么吗?我真的不好在编码...我不知道你在写什么 –
亲爱的@ItayKatsnelson我编辑了我的代码给一个很好解释的答案,请做任何困难的情况下评论:) – Tarptaeya
非常感谢,它帮助了我很多,但我只是在PyQt4上实现了即时通讯。是否有任何差异,或者我应该安装PyQt5并遵循你的代码?非常感谢 ! –
请遵循以下示例代码,但使用getText()方法从文本框中提取文本。 https://pythonspot.com/en/pyqt4-textbox/ –