问题
I have created a simple PyQt5 User Interface that looks like this:
import sys
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget, QLineEdit
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'Test'
self.left = 10
self.top = 10
self.width = 400
self.height = 500
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
# Create textbox
self.textbox = QLineEdit(self)
self.textbox.move(20, 100)
self.textbox.resize(280,40)
# Create textbox
self.textbox = QLineEdit(self)
self.textbox.move(20, 200)
self.textbox.resize(280,40)
# Create a button in the window
self.button = QPushButton('Run', self)
self.button.move(300, 99)
# Create a button in the window
self.button = QPushButton('Run', self)
self.button.move(300, 199)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
What I am trying to do is:
1) The user writes a string in the "textbox".
2) Clicks the run button.
3) The run button pushes the string to another variable (let's say "x='whatevertheuserinputs'", which is stored in another python file.
Can anyone give me any hint on how to approach the problem?
Thanks so much in advance!
回答1:
Since you also need the string to be passed to a function in another file, here is how a bare-bones application would be:
MyApp.py:
import sys
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget, QLineEdit
# For passing the string to some function in another file:
from StringStorage import storeString
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'Test'
self.left = 10
self.top = 10
self.width = 400
self.height = 500
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
# Create textbox
self.textbox = QLineEdit(self)
self.textbox.move(20, 100)
self.textbox.resize(280,40)
# Create a button in the window
self.button = QPushButton('Run', self)
self.button.move(300, 99)
# When the 'clicked' signal of the button is emitted, call some function (which acts as a slot):
self.button.clicked.connect(self.onButtonClicked)
self.show()
# Function to pass the entered string along to the function from another file
def onButtonClicked(self):
storeString(self.textbox.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
StringStorage.py:
# The text is to be stored in this string
x = ''
def storeString(inString):
global x
x = inString
# Do something with the string
print(inString)
return
来源:https://stackoverflow.com/questions/51308772/pyqt5-from-qlineedit-to-variable