如何在窗口外传递文本框的值PyQt5

  • 本文关键字:文本 PyQt5 窗口 python pyqt5
  • 更新时间 :
  • 英文 :


我开始了解PyQt5。我正试图将输入到文本框中的字符串传递给Python文件以进行处理。该字符串保存在b1_output中,应该在窗口关闭后进行更改和打印。但是我不知道如何访问它。在我的代码中的第一个print()实例期间,它将打印旧值。在第二次实例中,它根本不会打印。谢谢你的帮助!

我代码:

from PyQt5.QtWidgets import *
import sys
class MyWindow(QMainWindow):
b1_output = 'example'
def __init__(self):
QMainWindow.__init__(self)
self.win_width = 750
self.win_heigth = 150
self.leftmargin = 50
self.topmargin = 50
#self.width = 300
#self.height = 400
self.title = 'Title'
self.initUI()
def initUI(self):
# create window
self.setGeometry(50,50,self.win_width,self.win_heigth)
self.setWindowTitle(self.title)
self.label = QLabel(self)
# create textbox
self.textbox = QLineEdit(self)
self.textbox.resize((self.win_width-self.label.width()-150),20)
self.textbox.move(self.label.width()+100, 50)
# create button
self.b1 = QPushButton(self)
self.b1.setText('Go do magic!')
self.b1.move(self.win_width-self.b1.width()-50,100)
self.b1.clicked.connect(self.clicked)
def clicked(self):
self.b1_output = self.textbox.text()
self.update()
self.close()
def update(self):
self.label.adjustSize()

app = QApplication(sys.argv)
win = MyWindow()
print(win.b1_output)
win.show()
sys.exit(app.exec_())
print(win.b1_output)

sys.exit()的目的是终止程序,使该行之后的所有代码永远不会被执行。解决方案是在打印后使用sys.exit():

app = QApplication(sys.argv)
win = MyWindow()
print(win.b1_output)
win.show()
ret = app.exec_()
print(win.b1_output)
sys.exit(ret)

最新更新