改变xpnative主题中的ttk.Progressbar元素的颜色 - python

时间:2012-10-31 11:47:42

标签: python progress-bar tkinter tk ttk

我正在使用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()

1 个答案:

答案 0 :(得分:-1)

你的第一个问题有点含糊不清,因为我不确定你是在谈论控制进度条的外观还是显示进度的性质。

进度条的性质由其值控制,其mode选项(determinate进度条与indeterminate进度条不同;前者通过{{1}控制},后者只是表明“事情正在发生”。)

进度条的外观由整体主题控制。在Windows和Mac OS X上,默认主题是系统主题,意味着进度条看起来是原生的,无论是。我最近没有尝试过关于Linux的主题,所以我忘记了它们的样子;切换主题:

value