本文整理汇总了Python中ttk.Scrollbar.grid方法的典型用法代码示例。如果您正苦于以下问题:Python Scrollbar.grid方法的具体用法?Python Scrollbar.grid怎么用?Python Scrollbar.grid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ttk.Scrollbar
的用法示例。
在下文中一共展示了Scrollbar.grid方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: init_ui
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
def init_ui(self):
self.rowconfigure(3, weight=1)
self.columnconfigure(0, weight=1)
self.button_load_type = Button(self, text="Load Type JSON", command=lambda: browse_file(self, 1, ))
self.button_load_type.grid(
row=0, columnspan=2, sticky=W + E, pady=4, padx=5)
self.button_load_color = Button(
self, text="Load Color JSON", command=lambda: browse_file(self, 2))
self.button_load_color.grid(
row=1, columnspan=2, sticky=W + E, pady=4, padx=5)
button_load = Button(
self, text="Load Images", command=lambda: browse_images(self))
button_load.grid(row=2, columnspan=2, sticky=W + E, pady=4, padx=5)
button_learn = Button(
self,
text="Test",
command=
lambda: start_testing(self.dtype, self.dcolor, self.picture_frames)
)
button_learn.grid(row=4, columnspan=2, sticky=W + E, pady=4, padx=5)
canvas = Canvas(self)
canvas.grid(row=3, sticky=W + E + N + S, column=0, pady=4, padx=5)
frame = self.picture_frame = Frame(canvas)
canvas.create_window(0, 0, window=frame, anchor='nw')
scroll_bar = Scrollbar(self, orient="vertical", command=canvas.yview)
scroll_bar.grid(sticky=E + N + S, padx=5, row=3, column=1)
canvas.configure(yscrollcommand=scroll_bar.set)
# track changes to the canvas and frame width and sync them,
# also updating the scrollbar
def _configure_interior(event):
# update the scrollbars to match the size of the inner frame
size = (frame.winfo_reqwidth(), frame.winfo_reqheight())
canvas.config(scrollregion="0 0 %s %s" % size)
if frame.winfo_reqwidth() != canvas.winfo_width():
# update the canvas's width to fit the inner frame
canvas.config(width=frame.winfo_reqwidth())
frame.bind('<Configure>', _configure_interior)
def _configure_canvas(event):
if frame.winfo_reqwidth() != canvas.winfo_width():
# update the inner frame's width to fill the canvas
canvas.itemconfigure(frame, width=canvas.winfo_width())
canvas.bind('<Configure>', _configure_canvas)
示例2: _init_ui
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
def _init_ui(self):
# Load an image
self.img = ImageTk.PhotoImage(Image.open(r"images\dna5.png"))
# Define a canvas in a frame
frame = Frame(self)
c = Canvas(frame, bg="white", height=475, width=475)
# Display the image in the canvas
c.create_image(0, 0, image=self.img, anchor=NW)
# Y-scrollbar
yscrollbar = Scrollbar(frame, command=c.yview)
c.configure(yscrollcommand=yscrollbar.set)
# X-scrollbar
xscrollbar = Scrollbar(frame, orient=HORIZONTAL, command=c.xview)
c.configure(xscrollcommand=xscrollbar.set)
# Display widgets using grid layout.
frame.grid(row=0, column=0)
yscrollbar.grid(row=0, column=2, sticky=S + N)
xscrollbar.grid(row=2, column=0, sticky=W + E)
c.grid(row=0, column=0)
self.pack(fill=BOTH, expand=1)
示例3: TextWindow
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
class TextWindow(Frame):
""" A basic, scrollable text window that can either be editable or not """
def __init__(self, master):
""" Make a scrollable, resizeable text """
Frame.__init__(self, master)
# Add a horizontal and vertical scroller
self.hscroller = Scrollbar(self, orient=HORIZONTAL)
self.vscroller = Scrollbar(self, orient=VERTICAL)
# Make the text box
self.text = Text(self, width=90, state=DISABLED, height=15, wrap=NONE,
xscrollcommand=self.hscroller.set,
yscrollcommand=self.vscroller.set)
# Pack everything in there, nice and tight. Let the text expand and the
# scroll bars lengthen, but do not let the scroll bars thicken.
self.text.grid(column=0, row=0, sticky=N+S+E+W)
self.hscroller.grid(column=0, row=1, sticky=N+S+E+W)
self.vscroller.grid(column=1, row=0, sticky=N+S+E+W)
self.columnconfigure(0, weight=1)
self.columnconfigure(1, weight=0)
self.rowconfigure(0, weight=1)
self.rowconfigure(1, weight=0)
# Now make the scroll bars actually work
self.hscroller.configure(command=self.text.xview)
self.vscroller.configure(command=self.text.yview)
def write(self, s):
"""
Writes 's' to the window, such that it will emulate a file. We have to
change the state to ACTIVE in order to add text, but then change it back
to the original state afterwards
"""
self.text.configure(state=NORMAL)
self.text.insert(END, s)
self.text.configure(state=DISABLED)
def clear(self, event=None):
""" Clears all text from this window """
self.text.config(state=NORMAL)
self.text.delete('0.0', END)
self.text.config(state=DISABLED)
示例4: __init__
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
def __init__(self, master, mixer):
Frame.__init__(self, master)
scrollbar_h = Scrollbar(self, orient='horizontal')
scrollbar_v = Scrollbar(self, orient='vertical')
self.canvas = Canvas(self,
background='gray',
scrollregion=(0, 0, (3 + len(mixer) * FADER_WIDTH), FADER_HEIGHT),
yscrollcommand=scrollbar_v.set,
xscrollcommand=scrollbar_h.set)
scrollbar_v.config(command=self.canvas.yview)
scrollbar_h.config(command=self.canvas.xview)
master.bind("<MouseWheel>",
lambda e: self.canvas.yview_scroll(-e.delta, 'units'))
master.bind("<Shift-MouseWheel>",
lambda e: self.canvas.xview_scroll(-e.delta, 'units'))
Sizegrip(self).grid(column=2, row=1, sticky='se')
self.canvas.grid(column=0, row=0, sticky='nwes')
scrollbar_h.grid(column=0, row=1, sticky='we')
scrollbar_v.grid(column=1, row=0, sticky='sn')
master_fader = AudioFader(self, mixer.getVolume, mixer.setVolume, "Master")
master_fader.grid(column=2, row=0, sticky='nwes')
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
for i, channel in enumerate(mixer):
if channel.device.id_variable is not None:
name = channel.device.id_variable
else:
name = channel.device.name_id
fader = AudioFader(self.canvas, channel.get_gain, channel.set_gain, name)
self.canvas.create_window(i * FADER_WIDTH, 0, anchor='nw', window=fader)
示例5: _init_ui
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
def _init_ui(self):
"""
Composes the UI and associates the appropriate
handler for the actions to catch.
"""
self._parent.title("Events")
self._style = Style()
self._style.theme_use("default")
self.pack(fill=BOTH, expand=1)
self.columnconfigure(1, weight=1)
self.columnconfigure(3, pad=7)
self.rowconfigure(3, weight=1)
self.rowconfigure(5, pad=7)
label = Label(self, text="Actions")
label.grid(sticky=W, pady=4, padx=5)
self._text_area = self.ReadOnlyText(self)
self._text_area.grid(row=1, column=0, columnspan=2, rowspan=4, padx=5,
sticky=E+W+S+N)
scrollbar = Scrollbar(self, command=self._text_area.yview)
scrollbar.grid(row=1, column=2, rowspan=4, sticky=N+S)
self._text_area['yscrollcommand'] = scrollbar.set
start_button = Button(self, text="Start", command=self._rec_start)
start_button.grid(row=1, column=3)
stop_button = Button(self, text="Stop", command=self._rec_stop)
stop_button.grid(row=2, column=3, pady=4)
save_button = Button(self, text="Save",)
save_button.grid(row=5, column=3)
quit_button = Button(self, text="Quit", command=self._exit)
quit_button.grid(row=5, column=0, padx=5)
示例6: MainWindow
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
#.........这里部分代码省略.........
# self.menu_Apple.add_command(label='Test', command=self.cmd_dummy)
# self.menu_file.add_command(label='New', command=self.cmd_dummy, accelerator="Command-N")
self.menu_file.add_command(label='Open...', command=self.cmd_open_file, accelerator="Command-O")
self.root.bind('<Command-o>', self.cmd_open_file)
# self.menu_file.add_command(label='Close', command=self.cmd_dummy)
self.menu_program.add_command(label='Run', command=self.cmd_run, accelerator="R")
self.root.bind('<r>', self.cmd_run)
self.menu_program.add_command(label='Step', command=self.cmd_step, accelerator="S")
self.root.bind('<s>', self.cmd_step)
self.menu_program.add_command(label='Next', command=self.cmd_next, accelerator="N")
self.root.bind('<n>', self.cmd_next)
self.menu_program.add_command(label='Return', command=self.cmd_return, accelerator="BackSpace")
self.root.bind('<BackSpace>', self.cmd_return)
self.menu_help.add_command(label='Open Documentation', command=self.cmd_bugjar_docs)
self.menu_help.add_command(label='Open Bugjar project page', command=self.cmd_bugjar_page)
self.menu_help.add_command(label='Open Bugjar on GitHub', command=self.cmd_bugjar_github)
self.menu_help.add_command(label='Open BeeWare project page', command=self.cmd_beeware_page)
# last step - configure the menubar
self.root['menu'] = self.menubar
def _setup_button_toolbar(self):
'''
The button toolbar runs as a horizontal area at the top of the GUI.
It is a persistent GUI component
'''
# Main toolbar
self.toolbar = Frame(self.root)
self.toolbar.grid(column=0, row=0, sticky=(W, E))
# Buttons on the toolbar
self.run_button = Button(self.toolbar, text='Run', command=self.cmd_run)
self.run_button.grid(column=0, row=0)
self.step_button = Button(self.toolbar, text='Step', command=self.cmd_step)
self.step_button.grid(column=1, row=0)
self.next_button = Button(self.toolbar, text='Next', command=self.cmd_next)
self.next_button.grid(column=2, row=0)
self.return_button = Button(self.toolbar, text='Return', command=self.cmd_return)
self.return_button.grid(column=3, row=0)
self.toolbar.columnconfigure(0, weight=0)
self.toolbar.rowconfigure(0, weight=0)
def _setup_main_content(self):
'''
Sets up the main content area. It is a persistent GUI component
'''
# Main content area
self.content = PanedWindow(self.root, orient=HORIZONTAL)
self.content.grid(column=0, row=1, sticky=(N, S, E, W))
# Create subregions of the content
self._setup_file_lists()
self._setup_code_area()
self._setup_inspector()
# Set up weights for the left frame's content
示例7: Ordered_Listbox
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
class Ordered_Listbox(Frame):
def __init__(self, master, data=None, ascending_order = True, ignore_case=False, autoscroll=False, vscrollbar=True, hscrollbar=False, scrollbar_background=None, scrollbar_troughcolor=None, **kwargs):
Frame.__init__(self, master)
self._ignore_case = ignore_case
self._ascending_order = ascending_order
master.grid_rowconfigure(0, weight=1)
master.grid_columnconfigure(0, weight=1)
self._listbox = Listbox(self, *kwargs)
self._listbox.grid(row=0, column=0, sticky= N+E+W+S)
scrollbar_kwargs = {}
if scrollbar_background is not None:
scrollbar_kwargs["background"] = scrollbar_background
if scrollbar_troughcolor is not None:
scrollbar_kwargs["throughcolor"] = scrollbar_troughcolor
if vscrollbar:
self._vbar=Scrollbar(self,takefocus=0, command=self._listbox.yview, **scrollbar_kwargs)
self._vbar.grid(row=0, column=1, sticky= N+S)
if autoscroll:
self._listbox.config(yscrollcommand=lambda f, l: make_autoscroll(self._vbar, f, l))
else:
self._listbox.config(yscrollcommand=self._vbar.set)
if hscrollbar:
self._hbar=Scrollbar(self,takefocus=0, command=self._listbox.xview, **scrollbar_kwargs)
self._hbar.grid(row=0, column=1, sticky= E+W)
if autoscroll:
self._listbox.config(xscrollcommand=lambda f, l: make_autoscroll(self._hbar, f, l))
else:
self._listbox.config(xscrollcommand=self._hbar.set)
if data is not None:
for item in data:
self.add_item(item)
def add_item(self, item):
list_of_items = self._listbox.get(0, END)
index = bisect(list_of_items, item, ignore_case=self._ignore_case, ascending_order=self._ascending_order)
self._listbox.insert(index, item)
def delete_item(self, item):
list_of_items = self._listbox.get(0, END)
index = bisect(list_of_items, item, ignore_case=self._ignore_case, ascending_order=self._ascending_order)
self._listbox.delete(index-1)
def selected_items(self):
list_of_items = []
for index in self._listbox.curselection():
list_of_items.append(self._listbox.get(index))
return list_of_items
def selected_item(self):
return self._listbox.curselection()[0]
def deselect_all(self):
self._listbox.selection_clear(0, END)
def select(self, item):
index = self.index(item)
if index is None:
return
self._listbox.selection_set(index)
def deselect(self, item):
index = self.index(item)
if index is None:
return
self._listbox.selection_clear(index)
def index(self, item):
list_of_items = self._listbox.get(0, END)
try:
index = list_of_items.index(item)
except ValueError:
return None
return index
def bind(self, event, handler):
self._listbox.bind(event, handler)
def clear(self):
self._listbox.delete(1,END)
def __iter__(self):
#.........这里部分代码省略.........
示例8: Tk_Table
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
class Tk_Table(Frame, object):
def __init__(self, master, columns, data=None, command=None, editable=True, sort=True, select_mode=None, autoscroll=True, vscrollbar=True, hscrollbar=False, heading_anchor = CENTER, cell_anchor=W, style=None, scrollbar_background=None, scrollbar_troughcolor=None, height=None, padding=None, adjust_heading_to_content=False, stripped_rows=None, selection_background=None, selection_foreground=None, cell_background=None, cell_foreground=None, cell_font=None, field_background=None, heading_font= None, heading_background=None, heading_foreground=None, cell_pady=2, column_header=True, row_numbers=True, entry_background="#d6d6d6", entry_foreground=None, entry_validatecommand=None, entry_selectbackground="#1BA1E2", entry_selectborderwidth=None, entry_selectforeground=None, entry_font = "TkDefaultFont", rowlabel_anchor=E, rowlabel_minwidth=0, rowlabel_hoverbackground="#FFFFFF",frame_relief=None, frame_borderwidth=None, frame_background=None):
frame_kwargs = {}
if frame_relief is not None:
frame_kwargs["relief"] = frame_relief
if frame_borderwidth is not None:
frame_kwargs["borderwidth"] = frame_borderwidth
if frame_background is not None:
frame_kwargs["background"] = frame_background
Frame.__init__(self, master, class_="Multicolumn_Listbox", **frame_kwargs)
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(1, weight=1)
self._multicolumn_listbox = Multicolumn_Listbox(self, columns, data=data, command=command, sort=sort, select_mode=select_mode, heading_anchor = heading_anchor, cell_anchor=cell_anchor, style=style, height=height, padding=padding, adjust_heading_to_content=adjust_heading_to_content, stripped_rows=stripped_rows, selection_background=selection_background, selection_foreground=selection_foreground, cell_background=cell_background, cell_foreground=cell_foreground, cell_font=cell_font, field_background=field_background, heading_font=heading_font, heading_background=heading_background, heading_foreground=heading_foreground, cell_pady=cell_pady, headers=column_header)
self._multicolumn_listbox.interior.grid(row=0, column=1, sticky= N+E+W+S)
self._mousewheel_detection = True
if row_numbers:
self._row_numbers = Row_Header(self, font=self._multicolumn_listbox.font, row_height=self._multicolumn_listbox.row_height, row_minwidth=rowlabel_minwidth, hover_background = rowlabel_hoverbackground, anchor=rowlabel_anchor, onclick=self._on_click_row_label)
self._row_numbers.grid(row=0, column=0, sticky= N+S+E)
self._multicolumn_listbox.interior.bind("<Map>", self._place_vertically_row_numbers)
else:
self._row_numbers = None
if editable:
self._selected_cell = None
self._entry_popup = None
self._multicolumn_listbox.interior.bind("<1>", self._edit_cell)
def configure(event):
"""
if self._entry_popup:
self._entry_popup.destroy()
return
"""
self._multicolumn_listbox.interior.update_idletasks()
self._update_position_of_entry()
self._multicolumn_listbox.interior.bind("<Configure>", configure)
self._entry_kwargs = entry_kwargs = {}
if entry_background is not None:
entry_kwargs["background"] = entry_background
if entry_foreground is not None:
entry_kwargs["foreground"] = entry_foreground
if entry_validatecommand is not None:
entry_kwargs["validatecommand"] = entry_validatecommand
if entry_selectbackground is not None:
entry_kwargs["selectbackground"] = entry_selectbackground
if entry_selectforeground is not None:
entry_kwargs["selectforeground"] = entry_selectforeground
if entry_font is not None:
entry_kwargs["font"] = entry_font
if command is not None:
self._command = command
self._multicolumn_listbox.interior.bind("<<TreeviewSelect>>", self._on_select)
scrollbar_kwargs = {}
if scrollbar_background is not None:
scrollbar_kwargs["background"] = scrollbar_background
if scrollbar_troughcolor is not None:
scrollbar_kwargs["throughcolor"] = scrollbar_troughcolor
if vscrollbar:
if editable:
if row_numbers:
def yview_command(*args):
self._multicolumn_listbox.interior.yview(*args)
self._row_numbers.yview(*args)
self._update_position_of_entry()
else:
def yview_command(*args):
self._multicolumn_listbox.interior.yview(*args)
self._update_position_of_entry()
else:
if row_numbers:
def yview_command(*args):
self._multicolumn_listbox.interior.yview(*args)
self._row_numbers.yview(*args)
else:
yview_command = self._multicolumn_listbox.interior.yview
#.........这里部分代码省略.........
示例9: StartGui
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
def StartGui(self):
self.tkRoot = Tk(baseName="")
self.tkRoot.geometry("350x300+0+0")
self.tkRoot.title("Engine SAPI GUI")
self.GUIVisible = True
frame = Frame(self.tkRoot)
frame.style = Style()
frame.style.theme_use("alt")
frame.pack(fill=BOTH, expand=1)
frame.columnconfigure(1, weight=1)
frame.columnconfigure(7, pad=7)
frame.rowconfigure(13, weight=1)
frame.rowconfigure(13, pad=7)
Label(frame, text="Start:").grid(row = 0, column=0)
self.labelStart = Label(frame, text="0")
self.labelStart.grid(row = 1, column=0)
Label(frame, text="Length:").grid(row = 0, column=1)
self.labelLength = Label(frame, text="0")
self.labelLength.grid(row = 1, column=1)
Label(frame, text="Total:").grid(row = 0, column=2)
self.labelTotal = Label(frame, text="0")
self.labelTotal.grid(row = 1, column=2)
self.labelSentenceLeft = Label(frame, text="...")
self.labelSentenceLeft.grid(row = 2, column=0, sticky=E)
self.labelSentenceSpoken = Label(frame, text="...", foreground="red")
self.labelSentenceSpoken.grid(row = 2, column=1)
self.labelSentenceRight = Label(frame, text="...")
self.labelSentenceRight.grid(row = 2, column=2, sticky=W, columnspan=2)
scrollbar = Scrollbar(frame, orient=VERTICAL)
self.labelQueueToSpeak = Label(frame, text="Queue to speak:").grid(row = 3, column=0, pady=4, padx=5, sticky=W)
self.listboxQueueToSpeak = Listbox(frame, width=50, height=3, yscrollcommand=scrollbar.set)
scrollbar.config(command=self.listboxQueueToSpeak.yview)
self.listboxQueueToSpeak.grid( sticky=N+S+E+W, row = 4, column = 0, columnspan = 2 ,rowspan = 3, padx=3)
scrollbar.grid(sticky=N+S+W, row = 4, column = 2, rowspan = 3)
self.buttonPauze = Button(frame, text="Pauze", command=self.communicationProtocal.handlePauze)
self.buttonPauze.grid(row = 4, column=3)
self.buttonStop = Button(frame, text="Stop", command=self.communicationProtocal.restartProcess)
self.buttonStop.grid(row = 5, column=3)
self.buttonResume = Button(frame, text="Resume", command=self.communicationProtocal.handleResume)
self.buttonResume.grid(row = 6, column=3)
Label(frame, text="Text to say:").grid(row = 7, column=0, padx=3, sticky=W)
self.stringVarTextToSay = StringVar()
self.entryTextToSay = Entry(frame, textvariable=self.stringVarTextToSay, width=500)
self.entryTextToSay.grid(row=8, column=0, columnspan=3, padx=3, sticky=W)
self.stringVarTextToSay.set("Hello SAPI Speak Engine")
self.entryTextToSay.bind('<Return>', self.CallBackReturnSay)
self.buttonSay = Button(frame, text="Say", command=self.CallBackButtonSay)
self.buttonSay.grid(row = 8, column=3)
Label(frame, text="Recover action:").grid(row = 9, column=0, padx=3, sticky=W)
self.recoverActionLabelText = "None"
self.labelRecoverAction = Label(frame, text=self.recoverActionLabelText, foreground="blue")
self.labelRecoverAction.grid(row = 10, column=0)
Label(frame, text="Voice speed:").grid(row = 9, column=1, sticky=W)
self.buttonSpeedDown = Button(frame, text="Speed down", command=self.communicationProtocal.handleSpeedDown)
self.buttonSpeedDown.grid(row = 10, column=1, padx=3, sticky=E)
self.speedValue = 0
self.intVarSpeed = IntVar()
vcmd = (self.tkRoot.register(self.OnValidateEntrySpeakSpeed), '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
self.entrySpeakSpeed = Entry(frame, textvariable=self.intVarSpeed, validate="key", validatecommand=vcmd, width=5)
self.entrySpeakSpeed.grid(row=10,column=2)
self.entrySpeakSpeed.bind('<Return>', self.CallBackSetSpeed)
self.buttonSpeedUp = Button(frame, text="Speed up", command=self.communicationProtocal.handleSpeedUp)
self.buttonSpeedUp.grid(row = 10, column=3)
Label(frame, text="voice:").grid(row = 11, column=0, padx=3, sticky=W)
self.buttonPrevVoice = Button(frame, text="Prev voice", command=self.communicationProtocal.handlePrevVoice)
self.buttonPrevVoice.grid(row = 12, column=0, padx=3, sticky=W)
self.buttonNextVoice = Button(frame, text="Next voice", command=self.communicationProtocal.handleNextVoice)
self.buttonNextVoice.grid(row = 12, column=3)
self.currentVoice = StringVar(self.tkRoot)
self.currentVoice.set(self.communicationProtocal.CurrentVoiceName)
engine = pyttsx.init()
voices = engine.getProperty("voices")
voiceNames = list()
for x in xrange(0, len(voices)):
voiceNames.append(voices[x].name)
self.optionMenuVoices = OptionMenu(frame, self.currentVoice, *tuple(voiceNames), command=self.CallBackOptionMenuVoices)
self.optionMenuVoices.config(width=500)
self.optionMenuVoices.grid(sticky=W, row = 12, column = 1)
#.........这里部分代码省略.........
示例10: Scrolling_Area
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
class Scrolling_Area(Frame, object):
def __init__(self, master, width=None, anchor=N, height=None, mousewheel_speed = 2, scroll_horizontally=True, xscrollbar=None, scroll_vertically=True, yscrollbar=None, background=None, inner_frame=Frame, **kw):
Frame.__init__(self, master, class_="Scrolling_Area", background=background)
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
self._width = width
self._height = height
self.canvas = Canvas(self, background=background, highlightthickness=0, width=width, height=height)
self.canvas.grid(row=0, column=0, sticky=N+E+W+S)
if scroll_vertically:
if yscrollbar is not None:
self.yscrollbar = yscrollbar
else:
self.yscrollbar = Scrollbar(self, orient=VERTICAL)
self.yscrollbar.grid(row=0, column=1,sticky=N+S)
self.canvas.configure(yscrollcommand=self.yscrollbar.set)
self.yscrollbar['command']=self.canvas.yview
else:
self.yscrollbar = None
if scroll_horizontally:
if xscrollbar is not None:
self.xscrollbar = xscrollbar
else:
self.xscrollbar = Scrollbar(self, orient=HORIZONTAL)
self.xscrollbar.grid(row=1, column=0, sticky=E+W)
self.canvas.configure(xscrollcommand=self.xscrollbar.set)
self.xscrollbar['command']=self.canvas.xview
else:
self.xscrollbar = None
self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=1)
self.innerframe = inner_frame(self.canvas, **kw)
self.innerframe.pack(anchor=anchor)
self.canvas.create_window(0, 0, window=self.innerframe, anchor='nw', tags="inner_frame")
self.canvas.bind('<Configure>', self._on_canvas_configure)
Mousewheel_Support(self).add_support_to(self.canvas, xscrollbar=self.xscrollbar, yscrollbar=self.yscrollbar)
@property
def width(self):
return self.canvas.winfo_width()
@width.setter
def width(self, width):
self.canvas.configure(width= width)
@property
def height(self):
return self.canvas.winfo_height()
@height.setter
def height(self, height):
self.canvas.configure(height = height)
def set_size(self, width, height):
self.canvas.configure(width=width, height = height)
def _on_canvas_configure(self, event):
width = max(self.innerframe.winfo_reqwidth(), event.width)
height = max(self.innerframe.winfo_reqheight(), event.height)
self.canvas.configure(scrollregion="0 0 %s %s" % (width, height))
self.canvas.itemconfigure("inner_frame", width=width, height=height)
def update_viewport(self):
self.update()
window_width = self.innerframe.winfo_reqwidth()
window_height = self.innerframe.winfo_reqheight()
if self._width is None:
canvas_width = window_width
else:
canvas_width = min(self._width, window_width)
if self._height is None:
canvas_height = window_height
else:
canvas_height = min(self._height, window_height)
self.canvas.configure(scrollregion="0 0 %s %s" % (window_width, window_height), width=canvas_width, height=canvas_height)
self.canvas.itemconfigure("inner_frame", width=window_width, height=window_height)
示例11: MacroFrame
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
class MacroFrame(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, background="white")
self.parent = parent
self.numStates = 0
self.initUI()
def initUI(self):
self.columnconfigure(0, weight=0)
self.columnconfigure(1, weight=0)
self.columnconfigure(2, weight=1)
self.columnconfigure(3, weight=1)
self.rowconfigure(0, weight=1)
self.commandFrame = Frame(self, background="white")
self.commandFrame.grid(row=0, column=0, columnspan=5, sticky=W + E)
self.commandFrame.columnconfigure(1, weight=1)
self.btnCommand = Button(self.commandFrame, text="Run")
self.btnCommand.grid(row=0, column=0)
self.strCommand = StringVar()
self.entCommand = Entry(self.commandFrame, textvariable=self.strCommand)
self.entCommand.grid(row=0, column=1, sticky=W + E)
self.lstMacro = Listbox(self)
self.lstMacro.grid(row=1, column=0, sticky=N + S + W + E)
self.treeview = Treeview(self, columns=("Angle"), displaycolumns="#all", selectmode="browse")
self.treeview.grid(row=1, column=1, columnspan=4, sticky=N + S + W + E)
self.treeScrollbar = Scrollbar(self)
self.treeScrollbar.grid(row=1, column=5, sticky=N + S)
self.treeview.config(yscrollcommand=self.treeScrollbar.set)
self.treeScrollbar.config(command=self.treeview.yview)
self.btnFrame = Frame(self, background="white")
self.btnFrame.grid(row=2, column=0, columnspan=5, sticky=W + E)
self.btnRun = Button(self.btnFrame, text="Run", command=self.runMacro)
self.btnRun.grid(row=0, column=0)
self.btnStop = Button(self.btnFrame, text="Stop")
self.btnStop.grid(row=0, column=1)
self.btnSaveMacro = Button(self.btnFrame, text="Save Macro", command=self.saveMacro)
self.btnSaveMacro.grid(row=0, column=2)
self.btnDeleteMacro = Button(self.btnFrame, text="Delete Macro")
self.btnDeleteMacro.grid(row=0, column=3)
self.btnDeleteState = Button(self.btnFrame, text="Delete State")
self.btnDeleteState.grid(row=0, column=4)
def addState(self, robot):
stateName = "state" + str(self.numStates)
self.treeview.insert("", END, iid=stateName, text=stateName)
limbNum = 0
for limb in robot.getLimbs():
limbName = "limb" + str(limbNum)
self.treeview.insert(stateName, END, iid=stateName + "_" + limbName, text=limbName)
partNum = 0
for part in limb.getComponents():
partName = "joint" + str(partNum)
if isinstance(part, Joint):
self.treeview.insert(
stateName + "_" + limbName,
END,
iid=stateName + "_" + limbName + "_" + partName,
text=partName,
values=[part.angle],
)
partNum += 1
limbNum += 1
self.numStates += 1
def getState(self, stateNum, robot):
stateName = "state" + str(stateNum)
limbNum = 0
for limb in robot.getLimbs():
limbName = "limb" + str(limbNum)
partNum = 0
for part in limb.getComponents():
partName = "joint" + str(partNum)
if isinstance(part, Joint):
part.setAngle(int(self.treeview.item(stateName + "_" + limbName + "_" + partName, "values")[0]))
partNum += 1
limbNum += 1
def runMacro(self):
thread = threading.Thread(target=self.updateState)
thread.start()
def updateState(self):
for i in range(self.numStates):
self.getState(i, self.parent.robotFrame.robot)
time.sleep(0.1)
def saveMacro(self):
pass
示例12: Scrolling_Area
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
class Scrolling_Area(Frame, object):
def __init__(self, master, width=None, height=None, mousewheel_speed = 2, scroll_horizontally=True, xscrollbar=None, scroll_vertically=True, yscrollbar=None, outer_background=None, inner_frame=Frame, **kw):
super(Scrolling_Area, self).__init__(master, **kw)
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
self._clipper = Frame(self, background=outer_background, width=width, height=height)
self._clipper.grid(row=0, column=0, sticky=N+E+W+S)
self._width = width
self._height = height
self.innerframe = inner_frame(self._clipper, padx=0, pady=0, highlightthickness=0)
self.innerframe.place(in_=self._clipper, x=0, y=0)
if scroll_vertically:
if yscrollbar is not None:
self.yscrollbar = yscrollbar
else:
self.yscrollbar = Scrollbar(self, orient=VERTICAL)
self.yscrollbar.grid(row=0, column=1,sticky=N+S)
self.yscrollbar.set(0.0, 1.0)
self.yscrollbar.config(command=self.yview)
else:
self.yscrollbar = None
self._scroll_vertically = scroll_vertically
if scroll_horizontally:
if xscrollbar is not None:
self.xscrollbar = xscrollbar
else:
self.xscrollbar = Scrollbar(self, orient=HORIZONTAL)
self.xscrollbar.grid(row=1, column=0, sticky=E+W)
self.xscrollbar.set(0.0, 1.0)
self.xscrollbar.config(command=self.xview)
else:
self.xscrollbar = None
self._scroll_horizontally = scroll_horizontally
self._jfraction=0.05
self._startX = 0
self._startY = 0
# Whenever the clipping window or scrolled frame change size,
# update the scrollbars.
self.innerframe.bind('<Configure>', self._on_configure)
self._clipper.bind('<Configure>', self._on_configure)
self.innerframe.xview = self.xview
self.innerframe.yview = self.yview
Mousewheel_Support(self).add_support_to(self.innerframe, xscrollbar=self.xscrollbar, yscrollbar=self.yscrollbar)
def update_viewport(self):
# compute new height and width
self.update()
frameHeight = float(self.innerframe.winfo_reqheight())
frameWidth = float(self.innerframe.winfo_reqwidth())
if self._width is not None:
width = min(self._width, frameWidth)
else:
width = self._frameWidth
if self._height is not None:
height = min(self._height, frameHeight)
else:
height = self._frameHeight
self._clipper.configure(width=width, height=height)
def _on_configure(self, event):
self._frameHeight = float(self.innerframe.winfo_reqheight())
self._frameWidth = float(self.innerframe.winfo_reqwidth())
# resize the visible part
if self._scroll_horizontally:
self.xview("scroll", 0, "unit")
if self._scroll_vertically:
self.yview("scroll", 0, "unit")
def xview(self, mode = None, value = None, units = None):
value = float(value)
clipperWidth = self._clipper.winfo_width()
frameWidth = self._frameWidth
_startX = self._startX
if mode is None:
return self.xscrollbar.get()
elif mode == 'moveto':
# absolute movement
#.........这里部分代码省略.........
示例13: create_gui_elements
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
def create_gui_elements(self):
top_frame = Frame(self)
top_frame.grid(row=0, column=0, columnspan=9, rowspan=6)
# top_frame.pack(fill=X)
# image display
photo2 = ImageTk.PhotoImage(Image.open('back.png'))
image_display = Label(top_frame)
image_display.configure(image=photo2)
image_display.image = photo2
image_display.grid(row=0, columnspan=9, column=1, rowspan=6)
# image_lb.pack(side=TOP)
self.add_gui_element(GUI_ELEMENT.IMAGE_DISPLAY_LABEL, image_display)
close_button = Button(self, text='Close', command=close)
close_button.grid(row=9, column=9)
# close_button.pack(side=RIGHT, padx=5, pady=5)
self.add_gui_element(GUI_ELEMENT.CLOSE_BTN, close_button)
bottom_frame = Frame(self)
bottom_frame.grid(row=5, column=0, columnspan=9, rowspan=3)
# bottom_frame.pack(fill=X)
config_frame = Frame(bottom_frame)
config_frame.grid(row=5, column=6, columnspan=3, rowspan=3)
# config_frame.pack(fill=X)
list_box_frame = Frame(config_frame)
list_box_frame.grid(row=5, column=6, columnspan=3, rowspan=3)
# list_box_frame.pack(side=RIGHT)
scrollbar = Scrollbar(list_box_frame)
# scrollbar.pack(side=RIGHT, fill=Y)
resolution_lb = Listbox(list_box_frame, selectmode=SINGLE, height=4, yscrollcommand=scrollbar.set)
i = 0
for resolution in ScreenPaper.get_resolution():
resolution_lb.insert(i, '%dx%d' % (resolution[0], resolution[1]))
i += 1
scrollbar.grid(row=5, column=9, rowspan=9)
resolution_lb.grid(row=5, column=6, rowspan=4, columnspan=3)
scrollbar.config(command=resolution_lb.yview)
# resolution_lb.pack(side=RIGHT)
self.add_gui_element(GUI_ELEMENT.RESOLUTION_LB, resolution_lb)
ok_btn = Button(self, text='Create', command=self.create_pape)
ok_btn.grid(row=9, column=7)
# ok_btn.pack(side=RIGHT)
self.add_gui_element(GUI_ELEMENT.OK_BTN, ok_btn)
save_btn = Button(self, text='Save', command=self.save_image_as)
save_btn.grid(row=9, column=8)
# save_btn.pack(side=RIGHT)
self.add_gui_element(GUI_ELEMENT.SAVE_BTN, save_btn)
checkbox_frame = Frame(config_frame)
checkbox_frame.grid(row=5, column=0, rowspan=3, columnspan=6)
auto_save_var = IntVar()
auto_save_chk = Checkbutton(checkbox_frame, text="Save automatically", variable=auto_save_var, onvalue=1, offvalue=0)
auto_save_chk.grid(row=5, column=1)
# auto_save_chk.pack(side=BOTTOM)
self.add_gui_element(GUI_ELEMENT.AUTOMATICALLY_SAVE_CK, {'element':auto_save_chk, 'var': auto_save_var})
auto_upload_var = IntVar()
auto_upload_chk = Checkbutton(checkbox_frame, text="Upload to imgur automatically", variable=auto_upload_var, onvalue=1, offvalue=0)
auto_upload_chk.grid(row=6, column=1)
# auto_upload_chk.pack(side=BOTTOM)
self.add_gui_element(GUI_ELEMENT.AUTOMATICALLY_UPLOAD_CK, {'element': auto_upload_chk, 'var': auto_upload_var})
# checkbox_frame.pack(side=RIGHT)
message_lb = Label(self)
message_lb.grid(row=7, column=1)
# message_lb.pack(side=BOTTOM)
self.add_gui_element(GUI_ELEMENT.MESSAGE_LABEL, message_lb)
示例14: Display
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
class Display(object):
def __init__(self,image):
self.map = SVG(image)
self.width = self.map.width
self.height = self.map.height
self.font = "helvetica 16"
self.col_bg = "#FFFFFE"
self.col_text = "#CCCCCF"
self.col_min = (255,14,47)
self.col_max = (111,130,158)
self.states = ['WA', 'DE', 'DC', 'WI', 'WV', 'HI', 'FL', 'WY', 'NH', 'NJ', 'NM', 'TX', 'LA', 'NC', 'ND', 'NE', 'TN', 'NY', 'PA', 'MT', 'RI', 'NV', 'VA', 'CO', 'AK', 'AL', 'AR', 'VT', 'GA', 'IN', 'IA', 'MA', 'AZ', 'CA', 'ID', 'CT', 'ME', 'MD', 'OH', 'UT', 'MO', 'MN', 'MI', 'KS', 'OK', 'MS', 'SC', 'KY', 'SD', 'OR', 'IL']
self.colorDict = {key:"azure" for key in self.states}
def init_interface(self,root):
#widget declarations
self.searchbar = Entry(root,font=self.font,bg=self.col_bg,foreground=self.col_text)
self.execute = Button(root,text="Get Trends",command=self.query)
self.scrolltime = Scrollbar(root,orient=HORIZONTAL,command=self.temp)
#self.scrolltime.config(command=self.output.yview)
#gridding of widgets
self.space = Canvas(root,width=self.width,height=self.height,bg=self.col_bg)
self.space.grid(row=2,column=2,rowspan=4,columnspan=4,sticky=W+E+N+S)
self.searchbar.grid(row=1,column=2,columnspan=3,sticky=W+E+N+S,padx=20,pady=20)
self.execute.grid(row=1,column=5,sticky=W)#,sticky=W+E+N+S)
self.scrolltime.grid(row=6,column=2,columnspan=4,sticky=W+E+N+S)
self.draw_map()
def draw_map(self):
self.space.delete(ALL)
self.map.draw(self.space,self.colorDict)
def temp(self,x,y):
print "%s,%s"%(x,y)
def convert(self,data):
print data
results = {}
for pair in data:
(state,factor) = (pair[0], pair[1])
print (state, factor)
(r,g,b) = tuple(map(lambda x, y: int((float(factor)/100)*x + (1 - float(factor)/100)*y), self.col_min, self.col_max))
print (r,g,b)
results[state] = "#%02x%02x%02x"%(r,g,b)
return results
def query(self):
term = self.searchbar.get()
if term !="":
self.searchbar.delete(0,'end')
colors = Data(term)
if colors != []:
self.colorDict = self.convert(colors.getData())
self.draw_map()
def run(self):
root = Tk()
self.init_interface(root)
root.mainloop()
示例15: XML_Viwer
# 需要导入模块: from ttk import Scrollbar [as 别名]
# 或者: from ttk.Scrollbar import grid [as 别名]
class XML_Viwer(Frame):
def __init__(self, master, xml=None, heading_text=None, heading_anchor=None, padding=None, cursor=None, takefocus=None, style=None):
Frame.__init__(self, master, class_="XML_Viwer")
self._vsb = Scrollbar(self, orient=VERTICAL)
self._hsb = Scrollbar(self, orient=HORIZONTAL)
kwargs = {}
kwargs["yscrollcommand"] = lambda f, l: autoscroll(self._vsb, f, l)
kwargs["xscrollcommand"] = lambda f, l: autoscroll(self._hsb, f, l)
if style is not None:
kwargs["style"] = style
if padding is not None:
kwargs["padding"] = padding
if cursor is not None:
kwargs["cursor"] = cursor
if takefocus is not None:
kwargs["takefocus"] = takefocus
self._treeview = Treeview(self, **kwargs)
if heading_text is not None:
if heading_anchor is not None:
self._treeview.heading("#0", text=heading_text, anchor=heading_anchor)
else:
self._treeview.heading("#0", text=heading_text)
self._treeview.bind("<<TreeviewOpen>>", self._on_open)
self._treeview.bind("<<TreeviewClose>>", self._on_close)
# Without this line, horizontal scrolling doesn't work properly.
self._treeview.column("#0", stretch= False)
self._vsb['command'] = self._treeview.yview
self._hsb['command'] = self._treeview.xview
self._treeview.grid(column=0, row=0, sticky=N+S+W+E)
self._vsb.grid(column=1, row=0, sticky=N+S)
self._hsb.grid(column=0, row=1, sticky=E+W)
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
self._element_tree = None
self._item_ID_to_element = {}
if xml is not None:
self.parse_xml(xml)
def _on_open(self, event):
item_ID = self._treeview.focus()
if item_ID not in self._item_ID_to_element: return
node = self._item_ID_to_element[item_ID]
self._treeview.item(item_ID, text = self._repr_of_openning_tag(node))
def _on_close(self, event):
item_ID = self._treeview.focus()
if item_ID not in self._item_ID_to_element: return
node = self._item_ID_to_element[item_ID]
text = self._repr_of_openning_tag(node) + self._repr_of_closing_tag(node)
self._treeview.item(item_ID, text = text)
def parse_xml(self, xml):
self._element_tree = ET.ElementTree(ET.fromstring(xml))
self.clear()
self._walk_xml(self._element_tree.getroot())
@property
def element_tree(self):
return self._element_tree
@element_tree.setter
def element_tree(self, element_tree):
self._element_tree = element_tree
self.clear()
self._walk_xml(element_tree.getroot())
def clear(self):
self._item_ID_to_element = {}
self._treeview.delete(*self._treeview.get_children())
def _repr_of_openning_tag(self, node):
text = "<" + node.tag
attrs = node.attrib
# list function is here necessary to provide support to Python 3
a_names = list(attrs.keys())
a_names.sort()
#.........这里部分代码省略.........