我正在使用 python 2.7 和 TK 制作一个 gui,它可以访问文本文件并使用其中的数据来做很多事情,但这里相关的是发送 gchat 消息。目前,我一切正常,我需要一些帮助的一点是,当我调用我的模块发送消息时,消息发送完美,虽然我希望用户知道正在发生的过程,所以我创建了一个 ttk 。进度条。但有几件事我想改进:
1)我想改变实际栏的外观,在查看源文件时,我看不到任何选项,当我用谷歌搜索问题时,我能找到的唯一解决方法是更改源代码,我很确定这只会在使用我的文件运行时更改它,然后当用户运行它时,它会成为标准吗?最好,我希望栏是透明的,虽然蓝色会起作用,但我看到有些人在窗口机器中将蓝色作为状态,窗口是我主要关心的问题,所以如果我可以说,窗口中的蓝色,但是其他地方的本地人,那很好。
2)这个希望更简单一点,但是当按下按钮时,它会从用户输入中获取值,这些值仍然可以更改,可能会改变函数的结果,无论如何要停止对 tk 窗口的所有输入,然后功能完成后恢复?
以下是我目前所拥有的,谢谢你的帮助
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()