2

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

1 に答える 1

-1

最初の質問はややあいまいです。進行状況バーの外観を制御することについて話しているのか、それとも表示されている進行状況の性質について話しているのかがわかりません。

プログレスバーの性質は、その値とmodeオプションによって制御されます(determinateプログレスバーは、プログレスバーとは異なりindeterminateます。前者は、を介して制御されvalue、後者は「何かが起こっている」ことを示します)。

プログレスバーの外観は、全体的なテーマによって制御されます。WindowsおよびMacOSXでは、デフォルトのテーマはシステムテーマです。これは、プログレスバーがネイティブに見えることを意味します。最近Linuxでテーマを試したことがないので、そこでどのように見えるかを忘れています。テーマを切り替える:

# Switch to the included 'clam' theme
s = ttk.Style()
s.theme_use('clam')
于 2012-11-06T12:05:50.507 に答える