style - treeview tkinter python 3
cambio de color de los elementos ttk.Progressbar en el tema xpnative-python (1)
Su primera pregunta es algo ambigua, ya que no estoy seguro de si está hablando de controlar el aspecto de la barra de progreso o la naturaleza del progreso que está mostrando.
La naturaleza de la barra de progreso se controla a través de su valor y su opción de mode
(las barras de progreso determinate
son diferentes de las indeterminate
, las primeras se controlan a través del value
, las últimas solo muestran que "algo está sucediendo").
El aspecto de una barra de progreso está controlado por el tema general. En Windows y Mac OS X, el tema predeterminado es el tema del sistema, lo que significa que la barra de progreso se verá como nativa, sea lo que sea . No he experimentado recientemente con temas sobre Linux, así que me olvido de cómo se ven; cambiar los temas con:
# Switch to the included ''clam'' theme
s = ttk.Style()
s.theme_use(''clam'')
Estoy usando python 2.7 y TK para hacer una interfaz gráfica de usuario que accede a los archivos de texto y utiliza datos en ellos para hacer muchas cosas, pero el relevante aquí es el envío de un mensaje de gchat. Actualmente, tengo todo funcionando, el punto con el que necesito ayuda es cuando llamo a mi módulo para enviar el mensaje, el mensaje se envía perfectamente, aunque quería que el usuario tuviera una indicación del proceso, así que creé un ttk .barra de progreso. pero hay algunas cosas que me gustaría mejorar sobre esto:
1) Me gustaría cambiar la apariencia de la barra actual, al ver los archivos fuente, no pude ver ninguna opción, y cuando busqué en Google el problema, la única solución que pude encontrar fue cambiar el código fuente, estoy bastante seguro de que esto solo lo cambiaría cuando se ejecutara con mis archivos, y luego, cuando el usuario lo ejecute, ¿sería el estándar? preferiblemente, me gustaría que la barra sea transparente, aunque el azul funcionaría, he visto a algunas personas teniendo azul como estado en las máquinas de ventana, las ventanas son mi principal preocupación, así que si pudiera decir, azul en las ventanas, pero nativo en otro lugar, estaría bien.
2) esta es, con suerte, un poco más simple, pero cuando se presiona el botón toma valores de la entrada del usuario que aún se pueden cambiar, tal vez alterando el resultado de la función, de todos modos hay que detener toda entrada en una ventana tk, luego reanudar cuando la función está completa?
a continuación es lo que tengo hasta ahora, gracias por la ayuda
self.progressbar = ttk.Progressbar(self.gcTableButtonsFrame, length = 70, orient=HORIZONTAL, mode =''determinate'')
self.progressbar.grid(column = 0, row = 0, sticky = ''n s'')
#we then pass through the extension and the string ''test'' through this fnction from the gchat module which will then send a
#gchat message to the extension passed through
self.bytes = 0
self.maxbytes = 0
self.start()
self.t = thread.start_new_thread(gchat.sendGChatMessage,(text, "test"))
except IndexError:
tkMessageBox.showinfo("Invalid Entry", "Please first select an Entry to send to")
def start(self):
self.progressbar["value"] = 0
self.maxbytes = 50000
self.progressbar["maximum"] = 50000
self.read_bytes()
def read_bytes(self):
''''''simulate reading 500 bytes; update progress bar''''''
selection2 = self.gcTable.selection()
self.bytes += 700
self.progressbar["value"] = self.bytes
if self.bytes < self.maxbytes:
# read more bytes after 100 ms
Tk.after(self.mainPyWindow, 100, self.read_bytes)
else:
tkMessageBox.showinfo("Message Sent", "A GChat message has been sent to " + self.gcTable.item(selection2, ''values'')[1])
self.progressbar.destroy()