Кнопка Tkinter внутри для выпуска цикла в Python - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь создать простой графический интерфейс, где есть список предложений, и есть цикл for с tkinter Text, где отображаются эти предложения, я хочу, чтобы цикл повторялся и отображал следующее предложение из списка только тогда, когда нажата кнопка, как мне этого добиться, спасибо. Я пробовал wait_variable, но он не работает.

var = IntVar()
for entry in input_texts:
    scroll = Scrollbar(canvas)
    display = Text(canvas, height=2, width=110)
    display.insert(INSERT, entry)
    display.grid(row=1, sticky='w')

    scroll.grid(row=1, column=4)
    display.config(yscrollcommand=scroll.set)
    scroll.config(command=display.yview)

    confirm = Button(canvas, text=" NEXT ", command=pause)
    confirm.grid(row=4, sticky='w')
    confirm.wait_variable(var)
    var.set(0)

canvas.resizable(width=False, height=False)
canvas.mainloop()

1 Ответ

0 голосов
/ 26 апреля 2018

Есть много способов сделать это. Вот довольно простой способ сделать это.

import tkinter as tk

class Sentence:

    def __init__(self, master):
        self.text = tk.Text(master)
        self.scrolly = tk.Scrollbar(master, command=self.text.yview)
        self.scrolly.grid(row=0, column=1, sticky='nsw')
        self.text.grid(row=0, column=0, sticky='news')
        self.text['yscrollcommand'] = self.scrolly.set
        # Set the command attribute of the button to call a method that
        # inserts the next line into the text widget.
        self.button = tk.Button(master, text='Next', command=self.insertLine)
        self.button.grid(row=1, pady=10, column=0, sticky='n')
        self.data = ['Here is an example', 'This should be second', '3rd', 'and so on...']
        self.data.reverse()


    def insertLine(self):
        if len(self.data):
            # Pull the first line from the list and display it
            line = self.data.pop()
            self.text.insert(tk.END, line + '\n')
            self.text.see(tk.END)
        else:
            print("No more data")


if __name__ == '__main__':
    root = tk.Tk()
    sentence = Sentence(root)
    root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...