如何使用Python Tkinter创建类似记事本的全屏文本输入框?
Tkinter全屏铺满自动激活输入框实现方案
问题根因
你当前代码存在两个核心问题,无法满足RFID读卡自动输入的需求:
- 仅设置了窗口全屏属性,
Entry输入框的pack()布局未配置拉伸填充规则,组件默认按最小内容尺寸渲染,不会占满整个窗口 - 窗口启动后没有主动给输入框分配焦点,就算组件铺满窗口,无焦点状态下依然无法直接接收读卡器的输入内容
具体修改点
- 调整
pack()布局参数:添加fill=tk.BOTH、expand=True参数,让输入框在水平、垂直两个方向跟随窗口尺寸拉伸,占满全部可用空间,移除原有pady=20的上下边距避免留白 - 启动后主动聚焦输入框:窗口渲染完成后调用
focus_set()方法,让输入框默认获得输入焦点,无需手动点击即可接收读卡器输入 - (可选)如果需要视觉上完全无边界,可以给
Entry设置borderwidth=0、highlightthickness=0去掉默认边框
修正后可直接运行的代码
def onReturn(event): rfIDtext=entry1.get() cur.execute("INSERT INTO RFIDDATA(customer_ID,rf_ID) VALUES (?,?)",(custID,rfIDtext,)) entry1.delete(0,'end') root.destroy() con.commit() root = tk.Tk() root.title("RFID") entry1 = tk.Entry(root) entry1.bind("<Return>", onReturn) # 配置布局让输入框占满整个窗口 entry1.pack(fill=tk.BOTH, expand=True) root.attributes('-fullscreen', True) # 启动后自动让输入框获得焦点 entry1.focus_set() root.mainloop() con.close()
补充说明:如果需要调整输入框内文字大小适配全屏,可以在初始化Entry时添加
font=("字体名", 字号)参数,比如font=("Arial", 32),方便远距离观察读卡输入内容。
内容的提问来源于stack exchange,提问作者coding_witherrors
相关产品推荐
相关产品推荐

