You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Tkinter程序实现140字符限制的输入错误提示功能?

实现Tkinter消息输入的140字符限制与错误提示

你需要在提交数据的get_data函数中加入长度判断逻辑,而非单独使用一个无关的on_click函数。以下是修正后的完整代码,同时修复了原代码中stations列表的缩进错误:

import tkinter
import csv
import random
from tkinter import *
import datetime
from tkinter import messagebox

window = tkinter.Tk()
window.geometry("1920x1080")

def get_data():
    Message_data = Message.get()
    # 先判断消息长度是否超过140字符
    if len(Message_data) > 140:
        messagebox.showerror("错误", "错误:消息最多只能包含140个字符")
        return  # 直接返回,不执行后续保存逻辑
    
    Name_data = Name.get()
    vandaag = datetime.datetime.today()
    s = vandaag.strftime("%a %d %b %Y %H:%M")
    stations = ['Arnhem', 'Almere', 'Amersfoort', 'Almelo', 'Alkmaar', 'Apeldoorn', 'Assen', 'Amsterdam', 'Boxtel',
                'Breda', 'Dordrecht', 'Delft', 'Deventer', 'Enschede', 'Gouda', 'Groningen', 'Den Haag', 'Hengelo',
                'Haarlem', 'Helmond', 'Hoorn', 'Heerlen', 'Den Bosch', 'Hilversum', 'Leiden', 'Lelystad', 'Leeuwarden',
                'Maastricht', 'Nijmegen', 'Oss', 'Roermond', 'Roosendaal', 'Sittard', 'Tilburg', 'Utrecht', 'Venlo',
                'Vlissingen', 'Zaandam', 'Zwolle', 'Zutphen']
    station = random.choice(stations)
    with open('file.csv', 'a') as csvfile:
        w = csv.writer(csvfile, quoting=csv.QUOTE_ALL)
        if Name_data == '':
            w.writerow([Message_data, s, 'anoniem', station])
        else:
            w.writerow([Message_data, s, Name_data, station])

# 保留核心功能组件,移除测试用的无效按钮
Message_Text = tkinter.Label(window, text="Vul hier een bericht in", font=("Calibri", 20),bg="#a9a9a9",  fg="#ffffff")
Message = tkinter.Entry(window, font=("Calibri", 20),width=45, bg="#ffffff", fg="black")
Name_label = tkinter.Label(window, text="Vul hier je naam in", font=("Calibri", 20), fg="#ffffff")
Name = tkinter.Entry(window, font=("Calibri", 20), bg="#ffffff", fg="black")
button = tkinter.Button(window, text="Submit", width =20,height=5, font=("Calibri", 20),  command=get_data, bg="#a9a9a9", fg="#ffffff")

Message_Text.pack()
Message.pack()
Name_label.pack()
Name.pack()
button.pack()
window.mainloop()

关键修改说明:

  • 在get_data函数开头加入len(Message_data) > 140的判断,超过长度时弹出错误提示并终止函数,避免错误数据写入CSV。
  • 修正了原代码中stations列表的缩进错误(原代码中该列表不属于get_data函数,导致逻辑执行异常)。
  • 优化CSV写入逻辑,直接将各字段作为列表元素传入writerow,避免手动拼接字符串的冗余操作。
  • 移除原代码中用于测试的on_click函数和测试按钮,简化代码结构。

内容的提问来源于stack exchange,提问作者Danxs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:55:14