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 和 Mac OS X 上,默认主题是系统主题,这意味着进度条看起来是原生的,无论是. 我最近没有在 Linux 上尝试过主题,所以我忘记了它们在那里的样子;切换主题:

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