如何通过单击 QPushButton 在 QLineEdit 中输入输入,然后在 QLabel 中打印结果?
How to get input entered in QLineEdit by clicking QPushButton and then print result in QLabel?
首先,我想完整地解释一下我将要做什么。我有一个简单的脚本,我想将它转换成一个可执行文件或任何你称之为的文件,但首先我应该从界面的东西开始。
这是简单的 python 脚本:
for i in range(4):
a = False
while not a:
text = input("enter a word")
# a condition for accepting input. I mean input should satisfy this condition
if len(text) == 5:
a = True
# just print the word, simple and easy
print(text)
我想把这个过程放在PyQt5中来创建一个极其简单的用户输入界面。但我该怎么做呢?我想添加一个 QLineEdit
来获取输入!输入是一个类似字符串的文本!我想通过单击 QPushButton
触发并输入单词!虽然输入不满足条件 (len(text) == 5
),但我应该能够在 QLineEdit
中键入另一个输入并使用 QPushButton
输入它,直到输入满足条件!那么程序应该 print(text)
在 QLabel
中(我认为 QLabel
没问题,因为我可以调整它的维度和大小...)。重要的是我应该能够在程序中编写并输入 4 个正确的单词(满足条件的单词)(因为我写了 for i in range(4):
)。所以这是我期望的一步一步:
- 能够正确输入4个单词
- 通过
QLineEdit
获取输入
- 点击
QPushButton
输入内容
- 如果单词的长度是5,则打印它,否则:等待下一次输入
- 对 4 个有效输入执行此过程
我对pyqt5不是很熟悉,但我已经尽力了。这是我为此写的:
from PyQt5.QtWidgets import QApplication , QWidget , QPushButton , QLabel , QLineEdit
import sys
app = QApplication(sys.argv)
class APP(QWidget):
def __init__(self):
super().__init__()
self.button = QPushButton("Enter" , self)
self.button.setGeometry(500 , 400 , 100 , 50)
self.button.clicked.connect(self.clicked)
self.Line_edit()
self.label = QLabel("place of ouput prints" , self)
self.label.move(40 , 60)
self.label.setGeometry(50 , 50 , 150 , 50)
def Line_edit(self):
self.input_text = QLineEdit(self)
self.input_text.setPlaceholderText("Enter The Word")
def clicked(self):
# if QLineEdit contains a word
if self.input_text.text():
for i in range(4):
a = False
while not a:
text = self.input_text.text()
# a condition for accepting input. I mean input should satisfy this condition
if len(text) == 5:
a = True
# just print the word in QLable, simple and easy
self.label = QLabel(text , self)
# then it should be waiting for new input untill i == 3 (since i wrote for i in range(4))
window = APP()
window.show()
sys.exit(app.exec_())
当我尝试 运行 这段代码时,它甚至没有反应,什么也没有发生。我应该如何修改代码才能得到我应该得到的东西?
我自己想出了解决办法。当您单击 QPushButton
时,我对信号含义完全错了!我发现 QLabel
可以使用 .setText()
更新!所以这是解决方案:
from PyQt5.QtWidgets import QApplication , QWidget , QPushButton , QLabel , QLineEdit
import sys
app = QApplication(sys.argv)
class APP(QWidget):
def __init__(self):
super().__init__()
self.button = QPushButton("Enter" , self)
self.button.setGeometry(500 , 400 , 100 , 50)
self.button.clicked.connect(self.clicked)
self._submit_counter = 0
self.button2 = QPushButton("RESET" , self)
self.button2.setGeometry(500 , 600 , 100 , 50)
self.button2.clicked.connect(self.reset_clicked)
self.Line_edit()
self.label = QLabel("place of ouput prints" , self)
self.label.move(40 , 60)
self.label.setGeometry(50 , 50 , 150 , 50)
def Line_edit(self):
self.input_text = QLineEdit(self)
self.input_text.setPlaceholderText("Enter The Word")
def reset_clicked(self):
self._submit_counter = 0
def clicked(self):
if self._submit_counter<4:
# if QLineEdit contains a word
if self.input_text.text():
text = self.input_text.text()
# a condition for accepting input. I mean input should satisfy this condition
if len(text) == 5:
self._submit_counter += 1
# just print the word in QLable, simple and easy
self.label.setText(text)
window = APP()
window.show()
sys.exit(app.exec_())
首先,我想完整地解释一下我将要做什么。我有一个简单的脚本,我想将它转换成一个可执行文件或任何你称之为的文件,但首先我应该从界面的东西开始。
这是简单的 python 脚本:
for i in range(4):
a = False
while not a:
text = input("enter a word")
# a condition for accepting input. I mean input should satisfy this condition
if len(text) == 5:
a = True
# just print the word, simple and easy
print(text)
我想把这个过程放在PyQt5中来创建一个极其简单的用户输入界面。但我该怎么做呢?我想添加一个 QLineEdit
来获取输入!输入是一个类似字符串的文本!我想通过单击 QPushButton
触发并输入单词!虽然输入不满足条件 (len(text) == 5
),但我应该能够在 QLineEdit
中键入另一个输入并使用 QPushButton
输入它,直到输入满足条件!那么程序应该 print(text)
在 QLabel
中(我认为 QLabel
没问题,因为我可以调整它的维度和大小...)。重要的是我应该能够在程序中编写并输入 4 个正确的单词(满足条件的单词)(因为我写了 for i in range(4):
)。所以这是我期望的一步一步:
- 能够正确输入4个单词
- 通过
QLineEdit
获取输入
- 点击
QPushButton
输入内容
- 如果单词的长度是5,则打印它,否则:等待下一次输入
- 对 4 个有效输入执行此过程
我对pyqt5不是很熟悉,但我已经尽力了。这是我为此写的:
from PyQt5.QtWidgets import QApplication , QWidget , QPushButton , QLabel , QLineEdit
import sys
app = QApplication(sys.argv)
class APP(QWidget):
def __init__(self):
super().__init__()
self.button = QPushButton("Enter" , self)
self.button.setGeometry(500 , 400 , 100 , 50)
self.button.clicked.connect(self.clicked)
self.Line_edit()
self.label = QLabel("place of ouput prints" , self)
self.label.move(40 , 60)
self.label.setGeometry(50 , 50 , 150 , 50)
def Line_edit(self):
self.input_text = QLineEdit(self)
self.input_text.setPlaceholderText("Enter The Word")
def clicked(self):
# if QLineEdit contains a word
if self.input_text.text():
for i in range(4):
a = False
while not a:
text = self.input_text.text()
# a condition for accepting input. I mean input should satisfy this condition
if len(text) == 5:
a = True
# just print the word in QLable, simple and easy
self.label = QLabel(text , self)
# then it should be waiting for new input untill i == 3 (since i wrote for i in range(4))
window = APP()
window.show()
sys.exit(app.exec_())
当我尝试 运行 这段代码时,它甚至没有反应,什么也没有发生。我应该如何修改代码才能得到我应该得到的东西?
我自己想出了解决办法。当您单击 QPushButton
时,我对信号含义完全错了!我发现 QLabel
可以使用 .setText()
更新!所以这是解决方案:
from PyQt5.QtWidgets import QApplication , QWidget , QPushButton , QLabel , QLineEdit
import sys
app = QApplication(sys.argv)
class APP(QWidget):
def __init__(self):
super().__init__()
self.button = QPushButton("Enter" , self)
self.button.setGeometry(500 , 400 , 100 , 50)
self.button.clicked.connect(self.clicked)
self._submit_counter = 0
self.button2 = QPushButton("RESET" , self)
self.button2.setGeometry(500 , 600 , 100 , 50)
self.button2.clicked.connect(self.reset_clicked)
self.Line_edit()
self.label = QLabel("place of ouput prints" , self)
self.label.move(40 , 60)
self.label.setGeometry(50 , 50 , 150 , 50)
def Line_edit(self):
self.input_text = QLineEdit(self)
self.input_text.setPlaceholderText("Enter The Word")
def reset_clicked(self):
self._submit_counter = 0
def clicked(self):
if self._submit_counter<4:
# if QLineEdit contains a word
if self.input_text.text():
text = self.input_text.text()
# a condition for accepting input. I mean input should satisfy this condition
if len(text) == 5:
self._submit_counter += 1
# just print the word in QLable, simple and easy
self.label.setText(text)
window = APP()
window.show()
sys.exit(app.exec_())