self.num_label = tk.Label(self, text="村庄数目") self.num_label.pack() self.num_entry = tk.Entry(self) self.num_entry.pack()强制输入整数怎么修改
时间: 2024-02-22 10:00:29 浏览: 30
您可以使用 tkinter 的 validatecommand 和 validate 选项来实现强制输入整数的功能。具体实现方式如下:
1. 定义一个函数来验证输入的内容是否为整数:
```
def validate_int(var):
if var.isdigit():
return True
else:
return False
```
2. 在创建 Entry 组件时,将 validatecommand 选项设置为 validate_int 函数,并将 validate 选项设置为 'key'。
```
self.num_entry = tk.Entry(self, validate="key", validatecommand=(self.register(validate_int), '%P'))
```
这样就可以在用户输入时验证输入内容是否为整数,如果不是就不允许输入。
相关问题
self.reader_num_label = ttk.Label是什么意思
这行代码的意思是在当前对象(通常是一个窗口或者框架)中创建一个新的Label(标签)控件,这个控件由ttk(Tkinter的主题)模块提供。这个控件会显示在GUI界面上,并且可以设置文本、字体、颜色等属性。创建完成后,它会被赋值给对象的reader_num_label属性,以便在后续的代码中可以引用它。
def create_rul(self): # 村庄数目输入框 self.num_label = tk.Label(self, text="村庄数目") self.num_label.pack() self.num_entry = tk.Entry(self) self.num_entry.pack() # 可建公路数目输入框 self.edge_label = tk.Label(self, text="可建公路数目") self.edge_label.pack() self.edge_entry = tk.Entry(self) self.edge_entry.pack() def create_widgets(self): num = int(self.num_entry.get()) edge =int(self.edge_entry.get()) # 村庄名称输入框 self.village_label = tk.Label(self, text="村庄名称") self.village_label.pack() for i in range(num): self.village_entry = tk.Entry(self) self.village_entry.pack()代码检查和修订
在 `create_widgets` 函数中,获取 `num` 和 `edge` 变量的位置不正确,应该放在用户点击确认按钮之后获取,否则获取的值都是空字符串。因此,可以将 `num` 和 `edge` 变量的获取放在确认按钮的回调函数中,如下所示:
```
def create_rul(self):
# 村庄数目输入框
self.num_label = tk.Label(self, text="村庄数目")
self.num_label.pack()
self.num_entry = tk.Entry(self)
self.num_entry.pack()
# 可建公路数目输入框
self.edge_label = tk.Label(self, text="可建公路数目")
self.edge_label.pack()
self.edge_entry = tk.Entry(self)
self.edge_entry.pack()
# 确认按钮
self.confirm_button = tk.Button(self, text="确认", command=self.create_widgets)
self.confirm_button.pack()
def create_widgets(self):
# 获取村庄数目和可建公路数目
num = int(self.num_entry.get())
edge = int(self.edge_entry.get())
# 村庄名称输入框
self.village_label = tk.Label(self, text="村庄名称")
self.village_label.pack()
for i in range(num):
self.village_entry = tk.Entry(self)
self.village_entry.pack()
```
这样,在用户点击确认按钮之后才会获取 `num` 和 `edge` 变量的值,避免了获取空字符串的问题。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)