正如问题所说的那样.Text
小部件有<<Modified>>
事件,但Entry
小部件似乎没有.
我需要将Entry小部件中的值限制为仅限数字.我实施的方式是:
import numpy as np
from Tkinter import *;
import tkMessageBox;
class window2:
def __init__(self,master1):
self.panel2=Frame(master1)
self.panel2.grid()
self.button2=Button(self.panel2,text="Quit",command=self.panel2.quit)
self.button2.grid()
self.text1=Entry(self.panel2)
self.text1.grid()
self.text1.bind('<KeyPress>', self.keybind1)
self.text1.focus()
def keybind1 (self,event):
if event.int in np.linspace(0,9,10):
print event.int
root1=Tk()
window2(root1)
root1.mainloop()
Run Code Online (Sandbox Code Playgroud)
我不断收到Event实例没有属性'int'的错误消息.我该怎么办?
def check_the_input_only_allows_digits_only(inp):
# A function for validating the input, the purpose of this is to let
# the user enter only digits.
if inp.isdigit() or inp is "" or inp == "\b" or inp is None:
return True
else:
return False
reg = creditor.register(check_the_input_only_allows_digits_only)
amount.config(validate = "key",validatecommand = (reg,"%P"))
Run Code Online (Sandbox Code Playgroud)
我知道该函数 check_the_input_only_allows_digits_only
已注册,并且对于用户输入的每个字符,都会调用该函数并验证输入。但是为什么每次用户输入内容时.register
都不能调用该函数.register
?引擎盖下到底发生了什么?
如果我在Tkinter中创建一个小部件,我可以指定参与tcl/tk"小部件路径"概念的小部件名称.例如:
from Tkinter import *
button = Button( Frame( Tk(), name = "myframe" ), name = "mybutton" )
str( button ) == ".myframe.mybutton"
Run Code Online (Sandbox Code Playgroud)
是否有可能通过它的名字获取一个小部件,在我的例子中是"mybutton"?
我正在创建一个只允许输入数字的条目.如果该字符不是整数,我目前仍然在删除刚刚输入的字符.如果有人将"BLANK"替换为需要进行的操作,那将会有很多帮助.
import Tkinter as tk
class Test(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.e = tk.Entry(self)
self.e.pack()
self.e.bind("<KeyRelease>", self.on_KeyRelease)
tk.mainloop()
def on_KeyRelease(self, event):
#Check to see if string consists of only integers
if self.e.get().isdigit() == False:
self.e.delete("BLANK", 'end')#I need to replace 0 with the last character of the string
else:
#print the string of integers
print self.e.get()
test = Test()
Run Code Online (Sandbox Code Playgroud) 我一直在关注此处对输入框的验证。下面的代码来自带有附加条件的答案,即如果输入的值是,'Q'
则程序将添加'test'
到 Entry 值的开头。
但是,一旦插入此值,所有验证似乎都将超出窗口,并且条目允许大写值。对我的程序进行的一些测试显示验证命令(OnValidate
在本例中)不会在 Entry 的任何其他事件(键、焦点输入/输出等)上被调用。
import Tkinter as tk
class MyApp():
def __init__(self):
self.root = tk.Tk()
vcmd = (self.root.register(self.OnValidate),
'%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
self.entry = tk.Entry(self.root, validate="key",
validatecommand=vcmd)
self.entry.pack()
self.root.mainloop()
def OnValidate(self, d, i, P, s, S, v, V, W):
if S == "Q":
self.entry.insert(0,"test")
# only allow if the string is lowercase
return (S.lower() == S)
app=MyApp()
Run Code Online (Sandbox Code Playgroud)
我这样做的原因是我希望 Entry 显示一个默认值,如果它的值在用户进行任何更改后保留为空。(即我的情况是if not P
在焦点上)
任何想法如何实现这一点或上面出了什么问题,非常感谢。
我有一个n Entry小部件列表.用户应该只能键入以下字符:"V","F","".如果用户键入其中一个字符,则焦点应从条目#x传递到条目#x + 1,否则焦点应保持原位(在条目#x上)并且应丢弃输入.
我无法丢弃错误的输入:如果用户按下与允许的键不同的键,则Entry字段获取该键,但命令.delete(0,END)不起作用,因为小部件本身没有然后记住按下的键.
我该怎么办?
我正在使用 Tkinter 在 Python 3.6 中编写程序,其中客户有多个(11)个输入字段。我希望这些输入字段只接受整数,并且还能够定义最大字符数。
我已经有一个功能可以做到这一点。但此功能仅适用于一个输入字段。我尝试通过调用函数来输入变量,因此它会更改另一个输入字段。我无法做到这一点。
这是我的功能,适用于 1 个输入字段。
def limitMuntgeld(self, *args):
value = self.invoerM.get()
if len(value) > 5:
self.invoerM.set(value[:5])
if value.lower() in "abcdefghijklmnopqrstuvwxyz-=[];/":
self.invoerM.set(value[:0])
Run Code Online (Sandbox Code Playgroud)
这是与函数一起使用的示例输入字段代码
self.invoerMuntgeld = Entry(self, font=('Arial', 14), textvariable=self.invoerM)
Run Code Online (Sandbox Code Playgroud)
这与下面发布的输入字段上的跟踪相结合。
self.invoerM = StringVar()
self.invoerM.trace('w', self.limitMuntgeld)
Run Code Online (Sandbox Code Playgroud)
我也用 vcmd 和 validatecommand 尝试过。然而,没有好的结果。我的最终结果将是一个处理所有输入字段的函数。如果有人有任何建议,我会全神贯注!
Python 3.3.2 Hello.My问题 - 需要为输入数据(矩阵或表)创建GUI.并从此表单数据中获取.例如:
float
完美的解决方案是输入形式的限制(只有浮动).
问题:我能用什么?Tkinter没有表.. wxPython不支持Python 3. PyQt4?(mb你有例子如何从tabel中获取数据A=[[1.02,-0.25,-0.30,0.515],[-0.41,1.13,-0.15,1.555],[-0.25,-0.14,1.21,2.780]]
?)
任何人都有想法?