Tkinter имеет события низкого уровня, такие как <Visibility>
и <Map>
, которые должны срабатывать при смене страниц. К сожалению, они не работают надежно на всех платформах.
Самое простое и надежное решение - создать собственное событие. Во-первых, измените show_frame
, чтобы отправить событие в окно, когда оно показано:
def show_frame(self, page_name):
...
frame.event_generate("<<ShowFrame>>")
Затем каждая страница может связываться с этим событием, если оно должно быть уведомлено, когда оно становится видимым:
class UploadPage(tk.Frame):
def __init__(self, parent, controller):
...
self.bind("<<ShowFrame>>", self.on_show_frame)
def on_show_frame(self, event):
print("I am being shown...")
Можно также сделать это путем добавления столбца во времени выполнения. Это добавит потраченный столбец часов, не изменяя ядро Redmine. Просто бросьте следующий код в файл в lib /
Адаптированный от:
require_dependency 'query' module QueryPatch def self.included(base) # :nodoc: base.extend(ClassMethods) # Same as typing in the class base.class_eval do unloadable # Send unloadable so it will not be unloaded in development base.add_available_column(QueryColumn.new(:spent_hours)) end end module ClassMethods unless Query.respond_to?(:available_columns=) # Setter for +available_columns+ that isn't provided by the core. def available_columns=(v) self.available_columns = (v) end end unless Query.respond_to?(:add_available_column) # Method to add a column to the +available_columns+ that isn't provided by the core. def add_available_column(column) self.available_columns
Так как никто не ответил, я просто ввел источник по абсолютному адресу, пока он не привел к результатам. Затем я запустил блог, чтобы объяснить, как я сделал это.
Добавляют потраченный столбец времени к списку проблем по умолчанию в Redmine