本文整理汇总了Python中tkinter.ttk.Entry.grid方法的典型用法代码示例。如果您正苦于以下问题:Python Entry.grid方法的具体用法?Python Entry.grid怎么用?Python Entry.grid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tkinter.ttk.Entry
的用法示例。
在下文中一共展示了Entry.grid方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: add_file_info_box
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
def add_file_info_box(self, mainframe, name, labeldict, btncallback, fvar):
"""
Create and add a infobox containing the info about a loaded
savegame.
"""
title = {'source':'Copy face from source file:',
'target':'To target file:'}
frame = LabelFrame(mainframe, text=title[name])
frame.pack(anchor=N, fill=X, expand=1, side=TOP, padx=0, pady=0)
frame.columnconfigure(1, weight=1)
btn = Button(frame, text='Browse', command=btncallback)
btn.grid(column=0, row=0, padx=2, pady=2)
field = Entry(frame, width=50, textvariable=fvar)
field.grid(column=1, row=0, columnspan=2, padx=2, pady=2, sticky=W+E)
l = ('name','gender','level','race','location','save number','playing time')
for n, (i, j) in enumerate([(x.capitalize()+':', x) for x in l]):
Label(frame, text=i, state=DISABLED).grid(column=0, row=n+1, padx=4,
pady=3, sticky=E)
labeldict[j] = StringVar()
Label(frame, textvariable=labeldict[j]).grid(column=1, row=n+1,
padx=4, pady=3, sticky=W)
self.screenshot[name] = Label(frame)
self.screenshot[name].grid(column=2, row=1, rowspan=len(l),
padx=4, pady=4)
示例2: DlgDelay
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
class DlgDelay(Dialog):
def body(self, master, cfg={}):
"place user dialog widgets"
self.config = cfg
self.config["OK button"] = False
self.delay = StringVar()
self.delay.set(cfg.get("delay", ""))
self.edelay = Entry(master, width=15, textvariable=self.delay)
self.edelay.grid(column=1, row=0, sticky="e")
Label(master, text=_("Delay:")).grid(column=0, row=0, sticky="w")
self.resizable(width=0, height=0)
return self.edelay
def validate(self):
try:
flt = float(self.delay.get())
except ValueError:
return self.edelay
if flt < 0 or flt > 5:
return self.edelay
return None
def apply(self):
"On ok button pressed"
self.config["delay"] = self.delay.get()
self.config["OK button"] = True
示例3: __init__
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
def __init__(self, parent, url=None, buttonSEC=False, buttonRSS=False):
super(DialogURL, self).__init__(parent)
self.parent = parent
parentGeometry = re.match("(\d+)x(\d+)[+]?([-]?\d+)[+]?([-]?\d+)", parent.geometry())
dialogX = int(parentGeometry.group(3))
dialogY = int(parentGeometry.group(4))
self.accepted = False
self.url = None
self.transient(self.parent)
self.title("Enter URL")
self.urlVar = StringVar()
self.urlVar.set(url if url is not None else "http://")
frame = Frame(self)
urlLabel = Label(frame, text=_("URL:"), underline=0)
urlEntry = Entry(frame, textvariable=self.urlVar, width=60)
urlEntry.focus_set()
okButton = Button(frame, text=_("OK"), command=self.ok)
cancelButton = Button(frame, text=_("Cancel"), command=self.close)
if buttonSEC:
usSecButton = Button(frame, text=_("SEC search"), command=self.usSec)
usSecButton.grid(row=1, column=1, sticky=W, pady=3)
ToolTip(usSecButton, text=_("Opens US SEC Edgar Company Search (in web browser)\n\n"
"(1) Find the company in web browser,\n"
"(2) Click 'documents' button for desired filing,\n"
"(3) Find 'data files' panel, instance document row, 'document' column,\n"
"(4) On instance document file name, right-click browser menu: 'copy shortcut',\n"
"(5) Come back to this dialog window,\n"
"(6) Ctrl-v (paste) shortcut into above URL text box,\n"
"(7) Click ok button to load instance document"),
wraplength=480)
if buttonRSS:
rssButton = Button(frame, text=_("SEC RSS"), command=self.rssFeed)
rssButton.grid(row=1, column=1, pady=3)
ToolTip(rssButton, text=_("Opens current US SEC Edgar RSS feed"),
wraplength=480)
urlLabel.grid(row=0, column=0, sticky=W, pady=3, padx=3)
urlEntry.grid(row=0, column=1, columnspan=3, sticky=EW, pady=3, padx=3)
okButton.grid(row=1, column=2, sticky=E, pady=3)
ToolTip(okButton, text=_("Opens above URL from web cache, downloading to cache if necessary"), wraplength=240)
cancelButton.grid(row=1, column=3, sticky=EW, pady=3, padx=3)
ToolTip(cancelButton, text=_("Cancel operation"))
frame.grid(row=0, column=0, sticky=(N,S,E,W))
frame.columnconfigure(1, weight=1)
window = self.winfo_toplevel()
window.columnconfigure(0, weight=1)
self.geometry("+{0}+{1}".format(dialogX+50,dialogY+100))
self.bind("<Alt-u>", lambda *ignore: urlEntry.focus_set())
self.bind("<Return>", self.ok)
self.bind("<Escape>", self.close)
self.protocol("WM_DELETE_WINDOW", self.close)
self.grab_set()
self.wait_window(self)
示例4: make_entry
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
def make_entry(self, label_text, var):
'''Return (entry, label), .
entry - gridded labeled Entry for text entry.
label - Label widget, returned for testing.
'''
label = Label(self.top, text=label_text)
label.grid(row=self.row, column=0, sticky="nw")
entry = Entry(self.top, textvariable=var, exportselection=0)
entry.grid(row=self.row, column=1, sticky="nwe")
self.row = self.row + 1
return entry, label
示例5: createRow
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
def createRow(self,rowNumber):
isopach_L = Label(self.innerFrame, text=str(rowNumber+1), width=2)
isopach_L.grid(column=0, row=rowNumber+2, padx=(0,5), pady=5)
thicknessVar = tkinter.StringVar()
thicknessM_E = Entry(self.innerFrame,width=self.entryWidth,textvariable=thicknessVar, justify="right")
thicknessM_E.grid(column=1, row=rowNumber+2, pady=5)
areaVar = tkinter.StringVar()
sqrtAreaKM_E = Entry(self.innerFrame,width=self.entryWidth,textvariable=areaVar, justify="right")
sqrtAreaKM_E.grid(column=2, row=rowNumber+2, pady=5)
includeVar = tkinter.IntVar()
includeCB = tkinter.Checkbutton(self.innerFrame,variable=includeVar, selectimage=self.tickImage)
includeCB.grid(column=3,row=rowNumber+2,pady=5)
includeCB.invoke()
includeCB.bind("<Leave>",self.calculationTimeEstimationFunction)
return (isopach_L,None),(thicknessM_E,thicknessVar),(sqrtAreaKM_E,areaVar),(includeCB,includeVar)
示例6: MyTestDialog
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
class MyTestDialog( ModalDialog ):
def body( self, master ):
"""
Override the empty ModalDialog.body function
to set up the dialog how we want it.
"""
from tkinter.ttk import Label, Entry
Label( master, text="First:" ).grid( row=0 )
Label( master, text="Second:" ).grid( row=1 )
self.e1 = Entry( master )
self.e2 = Entry( master )
self.e1.grid( row=0, column=1 )
self.e2.grid( row=1, column=1 )
return self.e1 # initial focus
# end of MyTestDialog.apply
def validate( self ):
"""
Override the empty ModalDialog.validate function
to check that the results are how we need them.
"""
try: int( self.e1.get() ) and int( self.e2.get() )
except ValueError:
print( "ERROR: We need two valid integers!" )
return False
return True
# end of MyTestDialog.validate
def apply( self ):
"""
Override the empty ModalDialog.apply function
to process the results how we need them.
"""
first = int( self.e1.get() )
second = int( self.e2.get() )
print( first, second ) # or something
self.result = (first, second,)
示例7: text_query
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
def text_query(self, query_lable, original_text=None, accept_func=None):
if self._query is not None:
return
frame = Frame(self.menubar)
label = Label(frame, text=query_lable)
label.grid(column=0, row=0, sticky=(N, S))
self._accept_func = accept_func
entry = Entry(frame)
if original_text is not None:
entry.insert(0, original_text)
entry.original_value = original_text
entry.grid(column=1, row=0, sticky=(N,S,W,E))
kb.make_bindings(kb.text_query,
{'accept': self.accept_query,
'cancel': lambda e: self.close_query()}, entry.bind)
frame.grid(column=self._menucolumn, row=0)
self._menucolumn += 1
entry.focus_set()
self._query = frame
示例8: body
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
def body(self, master, cfg={}):
"place user dialog widgets"
self.config = cfg
self.config["OK button"] = False
self.site = StringVar()
self.site.set(cfg.get("site", ""))
self.login = StringVar()
self.login.set(cfg.get("user", ""))
self.password = StringVar()
self.password.set(str(cfg.get("password", "")))
site = Entry(master, width=15, textvariable=self.site)
site.grid(column=1, row=0, sticky="e")
Label(master, text=_("Site:")).grid(column=0, row=0, sticky="w")
loge = Entry(master, width=15, textvariable=self.login)
loge.grid(column=1, row=1, sticky="e")
Label(master, text=_("Username:")).grid(column=0, row=1, sticky="w")
pase = Entry(master, width=15, textvariable=self.password, show="*")
pase.grid(column=1, row=2, sticky="e")
Label(master, text=_("Password:")).grid(column=0, row=2, sticky="w")
self.to_remember = IntVar()
self.to_remember.set(cfg.get("remember_passwd", 1))
chk1 = Checkbutton(master, text="Remember",
variable=self.to_remember)
chk1.grid(column=0, row=3, sticky="w", columnspan=2)
self.resizable(width=0, height=0)
return loge
示例9: HelpSource
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
class HelpSource(Query):
"Get menu name and help source for Help menu."
# Used in ConfigDialog.HelpListItemAdd/Edit, (941/9)
def __init__(self, parent, title, *, menuitem='', filepath='',
used_names={}, _htest=False, _utest=False):
"""Get menu entry and url/local file for Additional Help.
User enters a name for the Help resource and a web url or file
name. The user can browse for the file.
"""
self.filepath = filepath
message = 'Name for item on Help menu:'
super().__init__(
parent, title, message, text0=menuitem,
used_names=used_names, _htest=_htest, _utest=_utest)
def create_widgets(self):
super().create_widgets()
frame = self.frame
pathlabel = Label(frame, anchor='w', justify='left',
text='Help File Path: Enter URL or browse for file')
self.pathvar = StringVar(self, self.filepath)
self.path = Entry(frame, textvariable=self.pathvar, width=40)
browse = Button(frame, text='Browse', width=8,
command=self.browse_file)
self.path_error = Label(frame, text=' ', foreground='red',
font=self.error_font)
pathlabel.grid(column=0, row=10, columnspan=3, padx=5, pady=[10,0],
sticky=W)
self.path.grid(column=0, row=11, columnspan=2, padx=5, sticky=W+E,
pady=[10,0])
browse.grid(column=2, row=11, padx=5, sticky=W+S)
self.path_error.grid(column=0, row=12, columnspan=3, padx=5,
sticky=W+E)
def askfilename(self, filetypes, initdir, initfile): # htest #
# Extracted from browse_file so can mock for unittests.
# Cannot unittest as cannot simulate button clicks.
# Test by running htest, such as by running this file.
return filedialog.Open(parent=self, filetypes=filetypes)\
.show(initialdir=initdir, initialfile=initfile)
def browse_file(self):
filetypes = [
("HTML Files", "*.htm *.html", "TEXT"),
("PDF Files", "*.pdf", "TEXT"),
("Windows Help Files", "*.chm"),
("Text Files", "*.txt", "TEXT"),
("All Files", "*")]
path = self.pathvar.get()
if path:
dir, base = os.path.split(path)
else:
base = None
if platform[:3] == 'win':
dir = os.path.join(os.path.dirname(executable), 'Doc')
if not os.path.isdir(dir):
dir = os.getcwd()
else:
dir = os.getcwd()
file = self.askfilename(filetypes, dir, base)
if file:
self.pathvar.set(file)
item_ok = SectionName.entry_ok # localize for test override
def path_ok(self):
"Simple validity check for menu file path"
path = self.path.get().strip()
if not path: #no path specified
self.showerror('no help file path specified.', self.path_error)
return None
elif not path.startswith(('www.', 'http')):
if path[:5] == 'file:':
path = path[5:]
if not os.path.exists(path):
self.showerror('help file path does not exist.',
self.path_error)
return None
if platform == 'darwin': # for Mac Safari
path = "file://" + path
return path
def entry_ok(self):
"Return apparently valid (name, path) or None"
self.entry_error['text'] = ''
self.path_error['text'] = ''
name = self.item_ok()
path = self.path_ok()
return None if name is None or path is None else (name, path)
示例10: _gui
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
def _gui():
try:
from tkinter import Tk, ttk, filedialog, messagebox, StringVar, IntVar
from tkinter.ttk import Button, Entry, Frame, Label, LabelFrame, Notebook, Radiobutton, Style
except:
sys.exit("Unable to load tkinter. Aborting.")
def _check_single(): #check the input and accordingly give the output... for the f_single tab
if txt_f_single_entry.get()=="":
lbl_f_single_result.config(text="", style="TLabel")
elif check_afm(txt_f_single_entry.get()):
lbl_f_single_result.config(text="Έγκυρο ΑΦΜ.", style="valid.TLabel")
else:
lbl_f_single_result.config(text="Άκυρο ΑΦΜ.", style="invalid.TLabel")
def _select_input_file():
strv_f_file_input.set(filedialog.askopenfilename(title="Άνοιγμα αρχείου"))
if strv_f_file_input.get() != "" and strv_f_file_output.get() != "":
btn_f_file_submit.config(state="normal")
else: btn_f_file_submit.config(state="disabled")
#TODO a much better mechanism to enable / disable btn_f_file_submit is needed.
def _select_output_file():
strv_f_file_output.set(filedialog.asksaveasfilename(title="Αποθήκευση ως..."))
if strv_f_file_input.get() != "" and strv_f_file_output.get() != "":
btn_f_file_submit.config(state="normal")
else: btn_f_file_submit.config(state="disabled")
def _check_file():#TODO this could / should be merged with the TUI version...
input_filepath = strv_f_file_input.get()
output_filepath = strv_f_file_output.get()
filter_output = intvar_filter_sel.get()
try:
input_file = open(input_filepath, "r")
output_file = open(output_filepath, "w")
except:
messagebox.showerror(title="Σφάλμα", message="Αδυναμία διαχείρησης των αρχείων που ορίσατε.\n\nΠαρακαλώ επιβεβαιώστε πως το αρχείο με τα δεδομένα υπάρχει, πως έχετε δικαιώματα ανάγνωσης, και πως έχετε δικαιώματα εγγραφής στον κατάλογο εξαγωγής των αποτελεσμάτων.")
return
counter = {True:0, False:0}
for entry in input_file:
validation = check_afm(entry.strip())
counter[validation]+=1
if filter_output == 3 and validation == False:
output_file.write(entry)
elif filter_output == 2 and validation == True:
output_file.write(entry)
elif filter_output == 1:
output_file.write(entry.strip() + "\t" + str(validation) + "\n\r")
lbl_f_file_result.config(text="Σύνολο: "+str(counter[True]+counter[False])+"\nΈγκυρα: "+str(counter[True])+"\nΆκυρα: "+str(counter[False]))
#create the window
main_window = Tk()
main_window.title("Έλεγχος εγκυρότητας Α.Φ.Μ. (v 2.0)")
main_window.geometry("600x180")
main_window.minsize(600,180)
#fool arround with styling
style = ttk.Style()
style.configure("valid.TLabel", background="green")
style.configure("empty.TLabel", background="white")
style.configure("invalid.TLabel", background="red")
style.configure("TNotebook", padding = 10)
#create the Notebook
tabs = Notebook(main_window)
f_single = Frame(tabs)
f_file = Frame(tabs)
tabs.add(f_single, text="Μεμονομένα Α.Φ.Μ.")
tabs.add(f_file, text="Λίστα από αρχείο")#add state="disabled" prior to git push until ready
tabs.pack(anchor="nw")
#add some widgets in f_single tab
lbl_f_single_instructions = Label(f_single, text="Εισάγετε έναν ΑΦΜ για έλεγχο")
lbl_f_single_instructions.grid(column=0, row=0)
lbl_f_single_result = Label(f_single, text="", width=10, justify="center")
lbl_f_single_result.grid(column=1, row=0, rowspan=2, sticky="ewns")
txt_f_single_entry = Entry(f_single, width=11)
txt_f_single_entry.focus()
txt_f_single_entry.bind("<KeyRelease>", lambda e: _check_single() )
txt_f_single_entry.grid(column=0,row=1)
#btn_f_single_submit = Button(f_single, text="Έλεγχος", command=_check_single)
#btn_f_single_submit.grid(column=0,row=2)
#add some widgets in f_file tab
lbl_f_file_finput = Label(f_file, text="Άνοιγμα...")
lbl_f_file_finput.grid(column=0, row=0)
strv_f_file_input = StringVar()
txt_f_file_finput = Entry(f_file, textvariable = strv_f_file_input)
txt_f_file_finput.grid(column=1, row=0)
btn_f_file_finput = Button(f_file, text="...", width=3, command=_select_input_file)
btn_f_file_finput.grid(column=2, row=0, sticky="W")
lbl_f_file_foutput = Label(f_file, text="Αποθήκευση ως...")
lbl_f_file_foutput.grid(column=0, row=1)
strv_f_file_output = StringVar()
txt_f_file_foutput = Entry(f_file, textvariable = strv_f_file_output)
txt_f_file_foutput.grid(column=1, row=1)
btn_f_file_foutput = Button(f_file, text="...", width=3, command=_select_output_file)
#.........这里部分代码省略.........
示例11: MarkovDemo
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
class MarkovDemo(Frame):
"MarkovDemo(master=None, **kw) -> MarkovDemo instance"
TEXT = dict(height=2, width=46, wrap=WORD) # Text Options
GRID = dict(padx=5, pady=5) # Grid Options
# Initialize a MarkovDemo instance with a GUI for interaction.
def __init__(self, master=None, **kw):
"Initialize the MarkovDemo instance's widgets and settings."
super().__init__(master, **kw)
self.build_widgets()
self.place_widgets()
self.setup_widgets()
self.grid_rowconfigure(2, weight=1)
self.grid_rowconfigure(3, weight=1)
self.grid_columnconfigure(0, weight=1)
self.key = self.primer = None
def build_widgets(self):
"Build the various widgets that will be used in the program."
# Create processing frame widgets.
self.processing_frame = LabelFrame(self, text='Processing Mode:')
self.mode_var = StringVar(self, 'encode')
self.decode_button = Radiobutton(self.processing_frame,
text='Decode Cipher-Text',
command=self.handle_radiobuttons,
value='decode',
variable=self.mode_var)
self.encode_button = Radiobutton(self.processing_frame,
text='Encode Plain-Text',
command=self.handle_radiobuttons,
value='encode',
variable=self.mode_var)
self.freeze_var = BooleanVar(self, False)
self.freeze_button = Checkbutton(self.processing_frame,
text='Freeze Key & Primer',
command=self.handle_checkbutton,
offvalue=False,
onvalue=True,
variable=self.freeze_var)
# Create encoding frame widgets.
self.encoding_frame = LabelFrame(self, text='Encoding Options:')
self.chain_size_label = Label(self.encoding_frame, text='Chain Size:')
self.chain_size_entry = Entry(self.encoding_frame)
self.plain_text_label = Label(self.encoding_frame, text='Plain-Text:')
self.plain_text_entry = Entry(self.encoding_frame)
# Create input frame widgets.
self.input_frame = LabelFrame(self, text='Input Area:')
self.input_text = ScrolledText(self.input_frame, **self.TEXT)
# Create output frame widgets.
self.output_frame = LabelFrame(self, text='Output Area:')
self.output_text = ScrolledText(self.output_frame, **self.TEXT)
def place_widgets(self):
"Place the widgets where they belong in the MarkovDemo frame."
# Locate processing frame widgets.
self.processing_frame.grid(sticky=EW, **self.GRID)
self.decode_button.grid(row=0, column=0, **self.GRID)
self.encode_button.grid(row=0, column=1, **self.GRID)
self.freeze_button.grid(row=0, column=2, **self.GRID)
# Locate encoding frame widgets.
self.encoding_frame.grid(sticky=EW, **self.GRID)
self.chain_size_label.grid(row=0, column=0, sticky=W, **self.GRID)
self.chain_size_entry.grid(row=0, column=1, sticky=EW, **self.GRID)
self.plain_text_label.grid(row=1, column=0, sticky=W, **self.GRID)
self.plain_text_entry.grid(row=1, column=1, sticky=EW, **self.GRID)
self.encoding_frame.grid_columnconfigure(1, weight=1)
# Locate input frame widgets.
self.input_frame.grid(sticky=NSEW, **self.GRID)
self.input_text.grid(sticky=NSEW, **self.GRID)
self.input_frame.grid_rowconfigure(0, weight=1)
self.input_frame.grid_columnconfigure(0, weight=1)
# Locate output frame widgets.
self.output_frame.grid(sticky=NSEW, **self.GRID)
self.output_text.grid(sticky=NSEW, **self.GRID)
self.output_frame.grid_rowconfigure(0, weight=1)
self.output_frame.grid_columnconfigure(0, weight=1)
def setup_widgets(self):
"Setup each widget's configuration for the events they handle."
self.input_text.bind('<Key>', self.handle_key_events)
self.input_text.bind('<Control-Key-a>', self.handle_control_a)
self.input_text.bind('<Control-Key-/>', lambda event: 'break')
self.output_text['state'] = DISABLED
self.output_text.bind('<Control-Key-a>', self.handle_control_a)
self.output_text.bind('<Control-Key-/>', lambda event: 'break')
########################################################################
# Take care of any special event needing dedicated processing.
def handle_radiobuttons(self):
"Change the interface based on the encoding / decoding setting."
if self.encrypting:
self.freeze_button.grid()
if not self.freeze_var.get():
self.encoding_frame.grid()
else:
#.........这里部分代码省略.........
示例12: MemberChecker
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
class MemberChecker(PanedWindow):
def __init__(self, parent):
PanedWindow.__init__(self, parent, background="white")
self.parent = parent
self.init_data()
self.init_log()
self.init_ui()
self.update_status()
def init_data(self):
self.data_store = api.DataStore()
def init_log(self):
self.entrance_log = entrance_log.EntranceLog()
def init_ui(self):
self.parent.title("Member Checker")
self.columnconfigure(3, weight=3)
self.pack(fill=BOTH, expand=True)
self.input = StringVar()
self.input_entry = Entry(self, textvariable=self.input)
self.input_entry.bind('<Return>', self.submit)
self.input_entry.grid(row=0, column=0, columnspan=3, sticky=E + W)
self.result = StringVar()
self.result_label = Label(self, textvariable=self.result)
self.result_label.grid(row=3, column=0, columnspan=3, sticky=E + W)
self.name = StringVar()
name_label = Label(self, textvariable=self.name)
name_label.grid(row=2, column=0, columnspan=3, sticky=E + W)
self.status = StringVar()
status_label = Label(self, textvariable=self.status)
status_label.grid(row=4, column=0, columnspan=4, sticky=E + W)
submit_button = Button(self, text="Submit", command=self.submit)
submit_button.grid(row=1, column=2)
enter_without_card_button = Button(self, text="Enter without card", command=self.enter_without_card)
enter_without_card_button.grid(row=1, column=0)
enter_member_without_card_button = Button(self, text="Enter member without card",
command=self.enter_member_without_card)
enter_member_without_card_button.grid(row=1, column=1)
self.entrance_log_list = Listbox(self)
self.entrance_log_list.grid(row=0, column=3, rowspan=4, sticky=E + W + S + N)
self.input_entry.focus()
def load_data(self):
if messagebox.askyesno("Load new API Data",
"Are you sure you want to load the new API data? All previous data will be removed. The program might be unresponsive for a few seconds, but don't kill it, please! It has feelings too."):
self.data_store.load_api_data()
def enter_by_identification(self, identification):
member = self.data_store.find_member_by_identification(identification)
if member is None:
if messagebox.askyesno("Not a member",
"This university identification is not registered as a member. Do you want to let them in as a non-member?"):
self.enter_non_member_by_identification(identification)
else:
self.enter_member(member)
def enter_by_barcode(self, barcode):
member = self.data_store.find_member_by_barcode(barcode)
if member is None:
if messagebox.askyesno("Not a member",
"This barcode is not registered as a member. Do you want to let them in as a non-member?"):
self.enter_non_member_by_barcode(barcode)
else:
self.enter_member(member)
def enter_non_member_by_identification(self, identification):
self.entrance_log.enter_non_member_by_identification(identification)
self.enter_non_member()
def enter_non_member_by_barcode(self, barcode):
self.entrance_log.enter_non_member_by_barcode(barcode)
self.enter_non_member()
def enter_without_card(self):
self.clear_result()
self.entrance_log.enter_without_card()
self.enter_non_member()
self.input_entry.focus()
def enter_member(self, member):
inside_result = self.entrance_log.is_member_inside(member)
if inside_result[0]:
if not messagebox.askyesno("Already inside",
"This membership card has already been used to enter at {}. Are you sure you want to register it again? Normally you should let this person enter without card (and bill them accordingly).".format(
inside_result[1])):
return
self.entrance_log.enter_member(member)
self.result.set('Member!')
self.result_label.configure(background='green')
#.........这里部分代码省略.........
示例13: __init__
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
def __init__(self, parent, title, host=None, realm=None, useOsProxy=None, urlAddr=None, urlPort=None, user=None, password=None, database=None, timeout=None, dbType=None, showUrl=False, showUser=False, showHost=True, showRealm=True, showDatabase=False):
super(DialogUserPassword, self).__init__(parent)
self.parent = parent
parentGeometry = re.match("(\d+)x(\d+)[+]?([-]?\d+)[+]?([-]?\d+)", parent.geometry())
dialogX = int(parentGeometry.group(3))
dialogY = int(parentGeometry.group(4))
self.accepted = False
self.transient(self.parent)
self.title(title)
self.urlAddrVar = StringVar()
self.urlAddrVar.set(urlAddr if urlAddr else "")
self.urlPortVar = StringVar()
self.urlPortVar.set(urlPort if urlPort else "")
self.userVar = StringVar()
self.userVar.set(user if user else "")
self.passwordVar = StringVar()
self.passwordVar.set(password if password else "")
self.databaseVar = StringVar()
self.databaseVar.set(database if database else "")
self.timeoutVar = StringVar()
self.timeoutVar.set(timeout if timeout else "")
frame = Frame(self)
y = 0
if showHost:
hostLabel = Label(frame, text=_("Host:"), underline=0)
hostDisplay = Label(frame, text=host, width=30)
if host and len(host) > 30:
ToolTip(hostDisplay, text=host, wraplength=240)
hostLabel.grid(row=y, column=0, sticky=W, pady=3, padx=3)
hostDisplay.grid(row=y, column=1, columnspan=4, sticky=EW, pady=3, padx=3)
y += 1
if showRealm:
realmLabel = Label(frame, text=_("Realm:"), underline=0)
realmDisplay = Label(frame, text=realm, width=25)
if realm and len(realm) > 30:
ToolTip(realmDisplay, text=realm, wraplength=240)
realmLabel.grid(row=y, column=0, sticky=W, pady=3, padx=3)
realmDisplay.grid(row=y, column=1, columnspan=4, sticky=EW, pady=3, padx=3)
y += 1
self.enabledWidgets = []
if useOsProxy is not None:
if sys.platform.startswith("win"):
hostProxy = _('Microsoft Windows Internet Settings')
elif sys.platform in ("darwin", "macos"):
hostProxy = _('Mac OS X System Configuration')
else: # linux/unix
hostProxy = _('environment variables')
useOsProxyCb = checkbox(frame, 0, y, text=_("Use proxy server of {0}").format(hostProxy))
useOsProxyCb.grid(columnspan=5)
useOsProxyCb.valueVar.set(useOsProxy)
ToolTip(useOsProxyCb, text=_("Check to use {0} \n"
"Uncheck to specify: \n"
" No proxy if URL address is left blank, \n"
" Proxy via URL address if it is not blank, \n"
" with user and password (if provided)"
).format(hostProxy), wraplength=360)
self.useOsProxyCb = useOsProxyCb
useOsProxyCb.valueVar.trace("w", self.setEnabledState)
y += 1
if showUrl:
urlAddrLabel = Label(frame, text=_("Address:"), underline=0)
urlAddrEntry = Entry(frame, textvariable=self.urlAddrVar, width=16)
urlPortLabel = Label(frame, text=_("Port:"), underline=0)
urlPortEntry = Entry(frame, textvariable=self.urlPortVar, width=5)
urlAddrEntry.focus_set()
urlAddrLabel.grid(row=y, column=0, sticky=W, pady=3, padx=3)
urlAddrEntry.grid(row=y, column=1, columnspan=2, sticky=EW, pady=3, padx=3)
urlPortLabel.grid(row=y, column=3, sticky=W, pady=3, padx=3)
urlPortEntry.grid(row=y, column=4, sticky=EW, pady=3, padx=3)
ToolTip(urlAddrEntry, text=_("Enter URL address and port number \n"
" e.g., address: 168.1.2.3 port: 8080 \n"
" or address: proxy.myCompany.com port: 8080 \n"
" or leave blank to specify no proxy server"), wraplength=360)
self.enabledWidgets.append(urlAddrEntry)
self.enabledWidgets.append(urlPortEntry)
y += 1
userLabel = Label(frame, text=_("User:"), underline=0)
userEntry = Entry(frame, textvariable=self.userVar, width=25)
userLabel.grid(row=y, column=0, sticky=W, pady=3, padx=3)
userEntry.grid(row=y, column=1, columnspan=4, sticky=EW, pady=3, padx=3)
self.enabledWidgets.append(userEntry)
y += 1
if not showUrl:
userEntry.focus_set()
passwordLabel = Label(frame, text=_("Password:"), underline=0)
passwordEntry = Entry(frame, textvariable=self.passwordVar, width=25, show="*")
passwordLabel.grid(row=y, column=0, sticky=W, pady=3, padx=3)
passwordEntry.grid(row=y, column=1, columnspan=4, sticky=EW, pady=3, padx=3)
self.enabledWidgets.append(passwordEntry)
y += 1
if showDatabase:
urlDatabaseLabel = Label(frame, text=_("Database:"), underline=0)
urlDatabaseEntry = Entry(frame, textvariable=self.databaseVar, width=25)
urlDatabaseLabel.grid(row=y, column=0, sticky=W, pady=3, padx=3)
urlDatabaseEntry.grid(row=y, column=1, columnspan=4, sticky=EW, pady=3, padx=3)
ToolTip(urlAddrEntry, text=_("Enter database name (optional) or leave blank"), wraplength=360)
self.enabledWidgets.append(urlDatabaseEntry)
y += 1
#.........这里部分代码省略.........
示例14: GUI
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
class GUI(object):
'''Stellt die Oberflaeche dar.
Alle steuerden Taetigkeiten werden (sollten) vom
Controller Objekt uebernommen werden.
'''
def __init__(self):
'''
Constructor
'''
self.root = Tk()
self.root.title("DinnerLog")
self.root.minsize(800, 600)
self.root.grid_columnconfigure(0, weight=1)
self.root.grid_rowconfigure(0, weight=1)
self.root.grid_rowconfigure(1, weight=3)
# Ein Frame für alles, das mit Zutaten zu tun hat
self.fr_zutaten = Labelframe(self.root, borderwidth=2, relief=GROOVE, text="Zutaten")
self.fr_zutaten.grid_columnconfigure(0, weight=1)
self.fr_zutaten.grid_rowconfigure(0, weight=1)
self.fr_zutaten.grid(row=0, column=0, sticky="NSWE")
self.lb_zutaten = Listbox(self.fr_zutaten)
sb_zutaten = Scrollbar(self.lb_zutaten, orient=VERTICAL)
self.lb_zutaten.configure(yscrollcommand=sb_zutaten.set)
sb_zutaten.config(command=self.lb_zutaten.yview)
sb_zutaten.pack(side="right", fill="both")
self.lb_zutaten.grid(row=0, column=0, sticky="NSEW")
self._addNeueZutatFrame()
# Ein Frame in den alles, das mit Mahlzeiten zu tun hat, kommt
self.fr_mahlzeit = Labelframe(self.root, borderwidth=2, relief=GROOVE, text="Mahlzeiten")
self.fr_mahlzeit.grid_columnconfigure(0, weight=1)
self.fr_mahlzeit.grid_rowconfigure(0, weight=1)
self.fr_mahlzeit.grid(row=1, column=0, sticky="NSWE")
self._addNeueMahlzeitFrame()
self.lb_mahlzeiten = Listbox(self.fr_mahlzeit, selectmode=SINGLE)
sb_mahlzeiten = Scrollbar(self.lb_mahlzeiten, orient=VERTICAL)
sb_mahlzeiten.configure(command=self.lb_mahlzeiten.yview)
self.lb_mahlzeiten.configure(yscrollcommand=sb_mahlzeiten.set)
sb_mahlzeiten.pack(side="right", fill="both")
self.lb_mahlzeiten.grid(row=0, column=0, sticky="NSEW")
fr_neu_ok = Frame(self.fr_mahlzeit)
fr_neu_ok.grid(row=1, column=0, columnspan=2, sticky="E")
self.btn_neu = Button(fr_neu_ok, text="Neu")
self.btn_neu.pack(side="left")
self.btn_mahlzeit_als_zt = Button(fr_neu_ok, text="Als Zutat")
self.btn_mahlzeit_als_zt.pack(anchor=E, side="right")
self.btn_insert = Button(fr_neu_ok, text="Hinzufuegen")
self.btn_insert.pack(anchor=E, side="right")
self.btn_update = Button(fr_neu_ok, text="Update")
self.btn_update.pack(anchor=E, side="right")
self.btn_delete = Button(fr_neu_ok, text="Loeschen")
self.btn_delete.pack(anchor=E, side="right")
# Ein Frame der Statistiken darstellt
self.fr_stats = Labelframe(self.root, borderwidth=2, relief=GROOVE, text="Statistik")
self.fr_stats.grid(row=3, column=0, sticky="NSWE")
#self.cv_stats = Canvas(self.fr_stats, height=80, width=600)
#self.cv_stats.create_line(2,5,598,5, fill="#bbb")
def _addNeueMahlzeitFrame(self):
self.fr_neue_mz = Frame(self.fr_mahlzeit)
self.fr_neue_mz.grid_rowconfigure(2, weight=1)
self.fr_neue_mz.grid(row=0, column=1, sticky="WSNE")
lbl_name = Label(self.fr_neue_mz, text="Name:")
lbl_name.grid(row=0, column=0, sticky="NW")
self.en_name = Entry(self.fr_neue_mz)
self.en_name.grid(row=0, column=1, columnspan=2, sticky="WNE")
lbl_zutat = Label(self.fr_neue_mz, text="Zutaten:")
lbl_zutat.grid(row=1, column=0, sticky="NW")
self.lb_zutat = Listbox(self.fr_neue_mz)
sb_zutat = Scrollbar(self.lb_zutat, orient=VERTICAL)
self.lb_zutat.configure(yscrollcommand=sb_zutat.set)
sb_zutat.configure(command=self.lb_zutat.yview)
sb_zutat.pack(side="right", fill="both")
self.lb_zutat.grid(row=2, column=0, columnspan=3, sticky="NWSE")
self.var_zutat = StringVar(self.fr_neue_mz)
#.........这里部分代码省略.........
示例15: ModelFrame
# 需要导入模块: from tkinter.ttk import Entry [as 别名]
# 或者: from tkinter.ttk.Entry import grid [as 别名]
class ModelFrame(LabelFrame):
topPadding = 12
def __init__(self,parent):
LabelFrame.__init__(self,parent,text="Model",borderwidth=5)
self.selection = tkinter.IntVar()
self.exponential = Radiobutton(self,text="Exponential model",variable=self.selection,value=Model.EXP.value,command=self.changeSelection)
self.powerlaw = Radiobutton(self,text="Power law model",variable=self.selection,value=Model.POW.value,command=self.changeSelection)
self.weibull = Radiobutton(self,text="Weibull model",variable=self.selection,value=Model.WEI.value,command=self.changeSelection)
self.exponential.grid(row=0,column=0,sticky="W",padx=10,pady=(self.topPadding,5))
self.powerlaw.grid(row=1,column=0,sticky="W",padx=10,pady=5)
self.weibull.grid(row=2,column=0,sticky="W",padx=10,pady=(5,0))
seperator = Separator(self, orient=tkinter.VERTICAL)
seperator.grid(row=0, column=1, rowspan=3, sticky="NS", padx=(20,10), pady=(self.topPadding,0))
## Exponential setup
self.expNumberOfSegments_L = Label(self,text="Number of segments: ")
self.expNumberOfSegments_E = Entry(self,width=5, justify="right")
self.expNumberOfSegments_E.insert(0, settings.EXP_DEFAULT_NUMBER_OF_SEGMENTS)
self.expWidgets = [self.expNumberOfSegments_L,self.expNumberOfSegments_E]
## Power law setup
self.powProximalLimit_L = Label(self,text="Proximal limit of integration: ")
self.powProximalLimit_E = Entry(self,width=5, justify="right")
self.powDistalLimit_L = Label(self,text="Distal limit of integration: ")
self.powDistalLimit_E = Entry(self,width=5, justify="right")
self.powProximalLimit_E.insert(0, settings.POW_DEFAULT_PROXIMAL_LIMIT)
self.powDistalLimit_E.insert(0, settings.POW_DEFAULT_DISTAL_LIMIT)
self.powWidgets = [self.powProximalLimit_L,self.powProximalLimit_E,
self.powDistalLimit_L,self.powDistalLimit_E]
## Weibull setup
self.weiNumberOfRuns_L = Label(self,text="Number of runs: ")
self.weiNumberOfRuns_E = Entry(self,width=5, justify="right")
self.weiIterationsPerRun_L = Label(self,text="Iterations per run: ")
self.weiIterationsPerRun_E = Entry(self,width=5, justify="right")
self.weiEstimatedTime_L = Label(self,text="Estimated time (s): ")
self.weiEstimatedTime_E = CustomEntry(self,width=5, justify="right")
self.weiEstimatedTime_E.setUserEditable(False)
self.weiLambdaLowerBoundL = Label(self,text="\u03BB lower bound:")
self.weiLambdaUpperBoundL = Label(self,text="\u03BB upper bound:")
self.weiLambdaLowerBoundE = Entry(self,width=5, justify="right")
self.weiLambdaUpperBoundE = Entry(self,width=5, justify="right")
self.weiKLowerBoundL = Label(self,text="k lower bound:")
self.weiKUpperBoundL = Label(self,text="k upper bound:")
self.weiKLowerBoundE = Entry(self,width=5, justify="right")
self.weiKUpperBoundE = Entry(self,width=5, justify="right")
self.weiNumberOfRuns_E.insert(0, settings.WEI_DEFAULT_NUMBER_OF_RUNS)
self.weiIterationsPerRun_E.insert(0, settings.WEI_DEFAULT_ITERATIONS_PER_RUN)
self.weiLambdaLowerBoundE.insert(0, settings.WEI_DEFAULT_LAMBDA_LOWER_BOUND)
self.weiLambdaUpperBoundE.insert(0, settings.WEI_DEFAULT_LAMBDA_UPPER_BOUND)
self.weiKLowerBoundE.insert(0, settings.WEI_DEFAULT_K_LOWER_BOUND)
self.weiKUpperBoundE.insert(0, settings.WEI_DEFAULT_K_UPPER_BOUND)
self.weiWidgets = [self.weiNumberOfRuns_L,self.weiNumberOfRuns_E,
self.weiIterationsPerRun_L,self.weiIterationsPerRun_E,
self.weiEstimatedTime_L,self.weiEstimatedTime_E,
self.weiLambdaLowerBoundL,self.weiLambdaUpperBoundL,self.weiLambdaLowerBoundE,self.weiLambdaUpperBoundE,
self.weiKLowerBoundL,self.weiKUpperBoundL,self.weiKLowerBoundE,self.weiKUpperBoundE]
## General
self.currentWidgets = []
self.selection.set(Model.EXP.value)
self.changeSelection()
def changeSelection(self):
for widget in self.currentWidgets:
widget.grid_remove()
modelType = Model(self.selection.get())
sX = 10
bX = 20
if modelType == Model.EXP:
self.expNumberOfSegments_L.grid(row=0,column=2,padx=(bX,sX),pady=(self.topPadding,5),sticky="W")
self.expNumberOfSegments_E.grid(row=0,column=3,padx=(sX,bX),pady=(self.topPadding,5),sticky="W")
self.currentWidgets = self.expWidgets
elif modelType == Model.POW:
self.powProximalLimit_L.grid(row=0,column=2,padx=(bX,sX),pady=(self.topPadding,5),sticky="W")
self.powProximalLimit_E.grid(row=0,column=3,padx=(sX,bX),pady=(self.topPadding,5),sticky="W")
#.........这里部分代码省略.........