tk获取到输入框的值是空的
时间: 2023-10-06 13:05:22 浏览: 86
如果你在 Tkinter 中获取到输入框的值为空,可能是因为你在获取值的时机不正确或者获取的方式有误。以下是一种正确获取输入框值的方法:
```python
import tkinter as tk
def get_input():
# 从输入框中获取内容
input_text = entry.get()
# 打印获取到的内容
print("输入框内容:", input_text)
root = tk.Tk()
# 创建输入框
entry = tk.Entry(root)
entry.pack()
# 创建获取按钮
button = tk.Button(root, text="获取输入框内容", command=get_input)
button.pack()
root.mainloop()
```
在这个示例中,我们创建了一个输入框 `entry`,并定义了一个 `get_input()` 函数来获取输入框的值。在函数内部,我们使用 `get()` 方法从输入框中获取值,并将其打印出来。
请确保在需要获取输入框值的时候调用 `get()` 方法,并且在调用之前用户已经有机会输入内容。另外,要确保输入框和按钮等控件被正确地添加到主窗口中,并且主循环 `root.mainloop()` 被执行。
如果你仍然遇到问题,可能是由于其他代码或操作导致的。请提供更多的相关代码,以便我们更好地帮助你解决问题。
相关问题
tk+mysql实现注册登录,登录和注册的输入框都不能为空(详细完整的代码)
以下是使用Tkinter和MySQL实现注册和登录功能的完整代码:
```python
from tkinter import *
import mysql.connector
# 创建MySQL连接
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
# 创建数据库表
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255), password VARCHAR(255))")
# 注册函数
def register():
# 获取输入框中的值
username = username_entry.get()
password = password_entry.get()
# 如果输入框为空,则弹出错误提示框
if username == "" or password == "":
error_label.config(text="请填写用户名和密码", fg="red")
return
# 查询数据库中是否已存在该用户
mycursor.execute("SELECT * FROM users WHERE username = %s", (username,))
result = mycursor.fetchone()
# 如果已存在该用户,则弹出错误提示框
if result:
error_label.config(text="该用户名已被注册", fg="red")
return
# 向数据库中插入新用户
mycursor.execute("INSERT INTO users (username, password) VALUES (%s, %s)", (username, password))
mydb.commit()
# 显示成功提示框
error_label.config(text="注册成功", fg="green")
# 登录函数
def login():
# 获取输入框中的值
username = username_entry.get()
password = password_entry.get()
# 如果输入框为空,则弹出错误提示框
if username == "" or password == "":
error_label.config(text="请填写用户名和密码", fg="red")
return
# 查询数据库中是否存在该用户
mycursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, password))
result = mycursor.fetchone()
# 如果不存在该用户,则弹出错误提示框
if not result:
error_label.config(text="用户名或密码错误", fg="red")
return
# 显示成功提示框
error_label.config(text="登录成功", fg="green")
# 创建窗口和组件
root = Tk()
root.title("登录/注册")
username_label = Label(root, text="用户名")
username_label.pack()
username_entry = Entry(root)
username_entry.pack()
password_label = Label(root, text="密码")
password_label.pack()
password_entry = Entry(root, show="*")
password_entry.pack()
register_button = Button(root, text="注册", command=register)
register_button.pack()
login_button = Button(root, text="登录", command=login)
login_button.pack()
error_label = Label(root, text="")
error_label.pack()
root.mainloop()
```
请注意,您需要将 `yourusername` 和 `yourpassword` 替换为您的MySQL用户名和密码,并且需要在MySQL中创建一个名为 `mydatabase` 的新数据库。此外,如果您想要在注册时添加其他字段,例如电子邮件地址或年龄,您需要修改数据库表的结构并相应地修改代码。
class ExcelApp: def init(self, master): self.master = master master.title("Excel App")# 创建工具栏 toolbar = tk.Frame(master, height=30) tk.Button(toolbar, text="打开", command=self.open_file).pack(side=tk.LEFT, padx=2, pady=2) tk.Button(toolbar, text="保存", command=self.save_file).pack(side=tk.LEFT, padx=2, pady=2) toolbar.pack(side=tk.TOP, fill=tk.X)# 创建文本框 text_frame = tk.Frame(self.panel_right) text_frame.pack(side=tk.TOP, fill=tk.BOTH, expand=True) self.textbox = tk.Text(text_frame) self.textbox.pack(side=tk.TOP, fill=tk.BOTH, expand=True)def show_sheet(self, sheet_name): self.textbox.tag_configure("left", justify="left") sheet = self.workbook[sheet_name] rows = sheet.max_row # 清空文本框 self.textbox.delete(1.0, tk.END) # 添加表名并设置居中标签 self.textbox.insert(tk.END, sheet_name + ":\n", "center") # 显示工作表内容,并在相应数据后面添加下拉输入框 for row in sheet.iter_rows(values_only=True): for i, cell in enumerate(row): line = str(cell) + "\t" if i == 0: # 在第一列数据后面添加下拉输入框 combobox = tk.ttk.Combobox(self.textbox, values=["下拉选项1", "下拉选项2", "下拉选项3"]) combobox.pack(side=tk.TOP, padx=10, pady=5) self.textbox.window_create(tk.END, window=combobox) self.textbox.insert(tk.END, line, "left") self.textbox.insert(tk.END, "\n") # 设置居中标签的样式 self.textbox.tag_configure("center", justify="center", font=("Arial", 14, "bold"))根據這個函數在寫一個函數,將這個函數生成文本框中的數據内容和下拉輸入框的内容按列寫入一個excel中,在寫入前要判斷文本框中是否存在内容和下拉輸入框是否有值,如果沒有就提醒
您可以参考以下的代码实现:
```python
import openpyxl
from openpyxl.utils import get_column_letter
def save_to_excel(self):
# 获取当前工作表名
sheet_name = self.workbook.active.title
# 创建新的excel文件
new_wb = openpyxl.Workbook()
new_sheet = new_wb.active
# 获取文本框中的数据
data = self.textbox.get("1.0", tk.END).strip()
# 判断文本框是否为空
if data:
# 将文本框中的数据按列写入新的excel文件
for i, row in enumerate(data.split("\n")):
for j, cell in enumerate(row.split("\t")):
col_letter = get_column_letter(j + 1)
new_sheet[col_letter + str(i+1)] = cell
# 检查下拉框是否有值
for child in self.textbox.winfo_children():
if isinstance(child, tk.ttk.Combobox) and child.get():
col_letter = get_column_letter(j + 2)
new_sheet[col_letter + str(i+1)] = child.get()
# 如果文本框和下拉框都为空,则提醒用户
if not data and not self.textbox.winfo_children():
messagebox.showwarning("警告", "文本框和下拉框都为空,无法保存!")
else:
# 保存新的excel文件
new_wb.save(sheet_name + ".xlsx")
```
这个函数会将文本框中的数据和下拉框中的选项按列写入一个新的excel文件,然后保存到当前工作表的同名文件中。如果文本框和下拉框都为空,则会弹出一个警告提示。
阅读全文