这是我的示例程序,在这里我有一个两行编辑,我想用键盘设置文本。我在两行编辑中得到相同的文本。任何一个可以帮助我如何集中特定选中的行吗编辑.if我选择了现金收到行编辑我的文字将设置为反对。谢谢请提前通知我。 以下是我的代码:
import sys
from PyQt4 import QtGui,QtCore
from functools import partial
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.Vbox = QtGui.QGridLayout()
hbox = QtGui.QHBoxLayout(spacing = 0)
hbox.setContentsMargins(0, 0, 0, 0)
cash_btn = QtGui.QPushButton("cash")
card_btn = QtGui.QPushButton("Card")
cash_btn.clicked.connect(self.cash_card_payment)
wallet_btn = QtGui.QPushButton("wallet")
hbox.addWidget(cash_btn)
hbox.addWidget(card_btn)
hbox.addWidget(wallet_btn)
self.Vbox.addLayout(hbox,0,0)
grid = QtGui.QGridLayout()
self.Vbox.addLayout(grid,3,0)
self.setLayout(self.Vbox)
names = [
'7', '8', '9', '-',
'4', '5', '6', '+',
'1', '2', '3', 'enter',
'0', '', '.']
positions = [(i,j) for i in range(4) for j in range(4)]
for position, name in zip(positions, names):
x, y = position
if name == '':
continue
button = QtGui.QPushButton(name)
button.setFocusPolicy(QtCore.Qt.NoFocus)
button.clicked.connect(partial(self.buttonClicked,name))
button.setMinimumWidth(50)
button.setMinimumHeight(50)
if button.text() == 'enter':
button.setMinimumHeight(110)
grid.addWidget(button, x, y, 2,1)
elif button.text() == '0':
grid.addWidget(button, x, y, 1,2)
else:
grid.addWidget(button, x, y, 1,1)
def cash_card_payment(self):
print "cardssss"
cash_payment_vbox = QtGui.QVBoxLayout()
cash_payment_vbox.setAlignment(QtCore.Qt.AlignCenter)
self.cash_received = QtGui.QLineEdit()
self.cash_tender = QtGui.QLineEdit()
cash_payment_vbox.addWidget(self.cash_received)
cash_payment_vbox.addWidget(self.cash_tender)
self.Vbox.addWidget(self.cash_received,1,0)
self.Vbox.addWidget(self.cash_tender,2,0)
def buttonClicked(self,name):
print name
self.cash_received.setText(name)
#herei want to set the text for
# cash_received objec only
self.cash_tender.setText(name) # here i want to set the text for
# cash_tender objec only how can i focus the one line edit to another
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
ex.setWindowTitle('Calculator')
ex.setGeometry(300, 150, 500,400)
sys.exit(app.exec_())
直接在
QLineEdit
中设置文本是无可比拟的,比如说在您使用QTextEdit
或其他小部件之后,如果您想实现clear键等等,那么您的解决方案将在很大程度上依赖于小部件较少耦合的解决方案是使用
QCoreApplication::postEvent()
将QKeyEvent
发送到使用QApplication::focusWidget()
具有焦点的小部件相关问题 更多 >
编程相关推荐