私は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()