Python作业。创建一个文本框和一个按钮,当文本框失去焦点、在文本框中按回车键或单击按时显示文本框的内容。

"""
创建一个文本框和一个按钮,
当文本框失去焦点、在文本框中按回车键或单击按时显示文本框的内容。
"""
from tkinter import *

win = Tk()  # 窗口
win.title('第四题')
win.geometry('210x60')  # 窗口大小
t = Text(win)

e = StringVar()

entry = Entry(t, textvariable=e)


def FocusIn(event):
    e.set('焦点')  # 在Entry中写入


def FocusOut(event):
    e.set('失去焦点')  # 在Entry中写入


def Enter(event):
    if event.char == '\r':  # \r为回车
        e.set('您按下回车')


def singleClick(event):
    print(event.num, type(event.num))
    if event.num == 1:
        e.set('您单击鼠标左键')
    elif event.num == 2:
        e.set('您单击鼠标中键')
    elif event.num == 3:
        e.set('您单击鼠标右键')
    else:
        e.set('您单击鼠标其他键')


def Button_1():
    e.set('您点击了按钮')


b = Button(win, text='这是个按钮', command=Button_1)
t.bind('<FocusIn>', FocusIn)  # 聚焦
t.bind('<FocusOut>', FocusOut)  # 不聚焦
entry.bind('<KeyPress>', Enter)  # 监视键盘
entry.bind('<Button>', singleClick)  # 监视鼠标
t.pack()  # 显示Text组件
entry.pack()  # 显示Entry
b.pack()  # 显示Button
win.mainloop()  # 显示win

仅供参考!

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Qt的signals和slots机制来实现回车键跳转文本框并全选其内容。具体实现代码可以参考以下示例: ```python from PyQt5.QtCore import Qt, pyqtSignal from PyQt5.QtGui import QKeyEvent from PyQt5.QtWidgets import QApplication, QLineEdit, QVBoxLayout, QWidget class MyLineEdit(QLineEdit): enter_pressed = pyqtSignal() def __init__(self, parent=None): super().__init__(parent) def keyPressEvent(self, event: QKeyEvent): if event.key() == Qt.Key_Return or event.key() == Qt.Key_Enter: self.enter_pressed.emit() return super().keyPressEvent(event) class MyWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) self.lineedit1 = MyLineEdit(self) self.lineedit1.enter_pressed.connect(self.focus_lineedit2) self.lineedit2 = MyLineEdit(self) self.lineedit2.enter_pressed.connect(self.focus_lineedit1) layout = QVBoxLayout(self) layout.addWidget(self.lineedit1) layout.addWidget(self.lineedit2) def focus_lineedit2(self): self.lineedit1.clearFocus() self.lineedit2.selectAll() self.lineedit2.setFocus() def focus_lineedit1(self): self.lineedit2.clearFocus() self.lineedit1.selectAll() self.lineedit1.setFocus() if __name__ == '__main__': import sys app = QApplication(sys.argv) widget = MyWidget() widget.show() sys.exit(app.exec_()) ``` 以上代码创建了两个MyLineEdit对象,并将它们放在MyWidget上。对于每一个MyLineEdit对象,我们定义了一个名为enter_pressed的signal,当按下回车键触发。在MyLineEdit的keyPressEvent()函数,我们判断当按下回车键,触发enter_pressed signal。在MyWidget,我们实现了两个focus_lineedit函数,分别用于设置焦点在第一个LineEdit和第二个LineEdit上。在这两个函数,我们使用selectAll()函数全选文本框内容,使用clearFocus()函数清除其他文本框上的焦点,再使用setFocus()函数设置焦点在当前文本框上。 最后,运行以上代码可以看到,当按下第一个LineEdit上的回车键焦点会自动跳转到第二个LineEdit上,并且第二个LineEdit的文本会被全选。按下第二个LineEdit上的回车键焦点又会跳转回第一个LineEdit上,并且第一个LineEdit的文本会被全选。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值