Python: 有多个 QLineEdit 框 (pyqt4)
Python: Having multiple QLineEdit boxes (pyqt4)
我希望有 2 个输入文本框并排放置。
我已经尝试 copy/past 一个文本框的代码,但没有产生正确的结果。仅显示一个文本框。
如果可能的话,我想让标签也与文本框对齐。
class UI_central(QtGui.QDialog):
def __init__(self, parent=None):
super(UI_central, self).__init__(parent)
"""
Input box for stock name
"""
label1 = QtGui.QLabel('Stock', self)
label1.move(50, 0)
self.line_edit = QtGui.QLineEdit()
self.line_edit.setText("Stock name")
hbox = QtGui.QHBoxLayout()
hbox.addWidget(self.line_edit)
self.setLayout(hbox)
"""
Input box for stock amount
"""
label2 = QtGui.QLabel('How Many?', self)
label2.move(100, 0)
self.line_edit2 = QtGui.QLineEdit()
self.line_edit2.setText("Stock amount")
hbox2 = QtGui.QHBoxLayout()
hbox2.addWidget(self.line_edit2)
self.setLayout(hbox2)
"""
Push buttons
"""
submit_button = QtGui.QPushButton("Submit")
clear_button = QtGui.QPushButton("Clear")
hbox.addWidget(submit_button)
hbox.addWidget(clear_button)
self.connect(submit_button, QtCore.SIGNAL("clicked()"),
self.submit)
self.connect(clear_button, QtCore.SIGNAL("clicked()"),
self.clear)
return
def submit(self):
str = self.line_edit.text()
# check str before doing anything with it!
print(str)
def clear(self):
print ("cleared")
self.line_edit.setText("")
您的代码创建了两个 LineEdit,但存在布局问题。每个 window 只能有一个布局管理器。您对 setLayout(self)
的第二次调用删除了第一个布局管理器。
顺便说一句,您可以将一个布局管理器嵌套在另一个布局管理器中(BoxLayout 管理器具有用于此目的的函数 addLayout
)。
此外,我不知道当您将对 move
的调用与布局管理器混合使用时会发生什么。我一直让布局管理器负责定位所有子项。
我删除了第二个布局,现在应该会出现两个 LineEdits。
class UI_central(QtGui.QDialog):
def __init__(self, parent=None):
super(UI_central, self).__init__(parent)
"""
Input box for stock name
"""
label1 = QtGui.QLabel('Stock', self)
label1.move(50, 0)
self.line_edit = QtGui.QLineEdit()
self.line_edit.setText("Stock name")
hbox = QtGui.QHBoxLayout()
hbox.addWidget(self.line_edit)
self.setLayout(hbox)
"""
Input box for stock amount
"""
label2 = QtGui.QLabel('How Many?', self)
label2.move(100, 0)
self.line_edit2 = QtGui.QLineEdit()
self.line_edit2.setText("Stock amount")
hbox.addWidget(self.line_edit2)
"""
Push buttons
"""
submit_button = QtGui.QPushButton("Submit")
clear_button = QtGui.QPushButton("Clear")
hbox.addWidget(submit_button)
hbox.addWidget(clear_button)
self.connect(submit_button, QtCore.SIGNAL("clicked()"),
self.submit)
self.connect(clear_button, QtCore.SIGNAL("clicked()"),
self.clear)
def submit(self):
str = self.line_edit.text()
# check str before doing anything with it!
print(str)
def clear(self):
print ("cleared")
self.line_edit.setText("")
我希望有 2 个输入文本框并排放置。
我已经尝试 copy/past 一个文本框的代码,但没有产生正确的结果。仅显示一个文本框。
如果可能的话,我想让标签也与文本框对齐。
class UI_central(QtGui.QDialog):
def __init__(self, parent=None):
super(UI_central, self).__init__(parent)
"""
Input box for stock name
"""
label1 = QtGui.QLabel('Stock', self)
label1.move(50, 0)
self.line_edit = QtGui.QLineEdit()
self.line_edit.setText("Stock name")
hbox = QtGui.QHBoxLayout()
hbox.addWidget(self.line_edit)
self.setLayout(hbox)
"""
Input box for stock amount
"""
label2 = QtGui.QLabel('How Many?', self)
label2.move(100, 0)
self.line_edit2 = QtGui.QLineEdit()
self.line_edit2.setText("Stock amount")
hbox2 = QtGui.QHBoxLayout()
hbox2.addWidget(self.line_edit2)
self.setLayout(hbox2)
"""
Push buttons
"""
submit_button = QtGui.QPushButton("Submit")
clear_button = QtGui.QPushButton("Clear")
hbox.addWidget(submit_button)
hbox.addWidget(clear_button)
self.connect(submit_button, QtCore.SIGNAL("clicked()"),
self.submit)
self.connect(clear_button, QtCore.SIGNAL("clicked()"),
self.clear)
return
def submit(self):
str = self.line_edit.text()
# check str before doing anything with it!
print(str)
def clear(self):
print ("cleared")
self.line_edit.setText("")
您的代码创建了两个 LineEdit,但存在布局问题。每个 window 只能有一个布局管理器。您对 setLayout(self)
的第二次调用删除了第一个布局管理器。
顺便说一句,您可以将一个布局管理器嵌套在另一个布局管理器中(BoxLayout 管理器具有用于此目的的函数 addLayout
)。
此外,我不知道当您将对 move
的调用与布局管理器混合使用时会发生什么。我一直让布局管理器负责定位所有子项。
我删除了第二个布局,现在应该会出现两个 LineEdits。
class UI_central(QtGui.QDialog):
def __init__(self, parent=None):
super(UI_central, self).__init__(parent)
"""
Input box for stock name
"""
label1 = QtGui.QLabel('Stock', self)
label1.move(50, 0)
self.line_edit = QtGui.QLineEdit()
self.line_edit.setText("Stock name")
hbox = QtGui.QHBoxLayout()
hbox.addWidget(self.line_edit)
self.setLayout(hbox)
"""
Input box for stock amount
"""
label2 = QtGui.QLabel('How Many?', self)
label2.move(100, 0)
self.line_edit2 = QtGui.QLineEdit()
self.line_edit2.setText("Stock amount")
hbox.addWidget(self.line_edit2)
"""
Push buttons
"""
submit_button = QtGui.QPushButton("Submit")
clear_button = QtGui.QPushButton("Clear")
hbox.addWidget(submit_button)
hbox.addWidget(clear_button)
self.connect(submit_button, QtCore.SIGNAL("clicked()"),
self.submit)
self.connect(clear_button, QtCore.SIGNAL("clicked()"),
self.clear)
def submit(self):
str = self.line_edit.text()
# check str before doing anything with it!
print(str)
def clear(self):
print ("cleared")
self.line_edit.setText("")