Используя Tkinter в Python для редактирования строки заголовка

При использовании обещаний блок catch () обычно используется после блока then () для обработки ошибок. Вот почему он может быть использован для нативного API извлечения.

fetch("***")
          .then(res => res.json())
          .then(
            (result) => {
              this.setState({
                isLoaded: true,
                items: result.items
              });
            }).catch((error) => {
              this.setState({
                isLoaded: true,
                error
              });
            }
          )
53
задан Bill the Lizard 17 December 2012 в 03:22
поделиться

4 ответа

Примером <часа> python GUI

Вот является пример:

from tkinter import *;
screen = Tk();
screen.geometry("370x420"); //size of screen

Меняют имя окна

  screen.title('Title Name')
<час>

Выполнение это:

screen.mainloop();
0
ответ дан 7 November 2019 в 08:29
поделиться

Если вы не создадите корневое окно, Tkinter создаст его за вас, когда вы попытаетесь создать любой другой виджет. Таким образом, в вашем __init__, поскольку вы еще не создали корневое окно при инициализации фрейма, Tkinter создаст его за вас. Затем вы вызываете make_widgets, который создает второе корневое окно. Вот почему вы видите два окна.

Хорошо написанная программа Tkinter всегда должна явно создавать корневое окно перед созданием любых других виджетов.

Когда вы измените свой код, чтобы явно создать корневое окно, вы получите одно окно с ожидаемым заголовком.

Пример:

from tkinter import Tk, Button, Frame, Entry, END

class ABC(Frame):
    def __init__(self,parent=None):
        Frame.__init__(self,parent)
        self.parent = parent
        self.pack()
        self.make_widgets()

    def make_widgets(self):
        # don't assume that self.parent is a root window.
        # instead, call `winfo_toplevel to get the root window
        self.winfo_toplevel().title("Simple Prog")

        # this adds something to the frame, otherwise the default
        # size of the window will be very small
        label = Entry(self)
        label.pack(side="top", fill="x")

root = Tk()
abc = ABC(root)
root.mainloop()

Также обратите внимание на использование self.make_widgets(), а не ABC.make_widgets(self). Хотя оба варианта в итоге делают одно и то же, первый является правильным способом вызова функции.

83
ответ дан 7 November 2019 в 08:29
поделиться

self.parent - это ссылка на фактическое окно, поэтому self.root.title должен быть self.parent.title, а self.root не должен существовать.

0
ответ дан 7 November 2019 в 08:29
поделиться

Попробуйте что-нибудь вроде:

from tkinter import Tk, Button, Frame, Entry, END

class ABC(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()        

root = Tk()
app = ABC(master=root)
app.master.title("Simple Prog")
app.mainloop()
root.destroy()

Теперь у вас должно быть фрейм с заголовком, затем вы можете добавить окна для различных виджетов, если хотите.

13
ответ дан 7 November 2019 в 08:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: