Реализация виджета tkinter - PullRequest
0 голосов
/ 29 мая 2018

Я новичок в классах и ткинтер в целом.Это мой код, я пытался простой интерфейс, в котором я могу выбрать начальную и конечную даты, чтобы определить интервал.

import tkinter as tk
import Calendar as cal

class Application(tk.Frame):    
def __init__(self, master = None):
    super().__init__(master)
    self.grid()
    self.pack()
    self.create_widgets()
def create_widgets(self):
    self.winfo_toplevel().title("Choose date")
    self.sd_button = tk.Label(self, text="Start date")
    self.sd_button.pack()
    self.ed_button = tk.Label(self, text="End date")
    self.ed_button.pack()
    self.sd_date_button = cal.Control(root)
    self.sd_date_button.pack()
    self.ed_date_button = cal.Control(root)
    self.ed_date_button.pack()
root = tk.Tk()
my_gui = Application(root)
root.mainloop()

Я хочу реализовать кнопку рядом с «Пуск»дата "и" дата окончания ", что позволяет мне выбрать дату, как всплывающее окно.По этой ссылке я нашел виджет внешнего кода, который может выполнять эту работу: https://python -forum.io / Thread-Tkinter-tkinter-calendar-widget

Поэтому я прописал код вссылку и вставить в файл "Calendar.py".К сожалению, я изо всех сил пытался сделать так, чтобы это эффективно отображалось в моем основном коде.Кто-нибудь может мне помочь / дать мне подсказку?Большое спасибо заранее!

1 Ответ

0 голосов
/ 29 мая 2018

Было несколько проблем.

Вы используете как пакет, так и сетку в __init__.

Поскольку вы импортируете Calendar.py, его нет в вашей папке с именами, и вы должны компенсировать это.Имя будет равно Calendar.Calendar, поскольку пакет и класс называются Calendar.

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

Сохраните ссылку на мастер, чтобы вы могли ее вызвать.

Я также связал ПРОБЕЛ с функцией распечатки.

import tkinter as tk
import Calendar

class Application(tk.Frame):    
    def __init__(self, master = None):
        super().__init__(master)
        self.master = master
        self.grid()
        self.data = {}
        self.create_widgets()

    def create_widgets(self):
        self.winfo_toplevel().title("Choose date")
        self.sd_button = tk.Button(self, text="Start date", command=self.popup)
        self.sd_button.grid()
        self.ed_button = tk.Button(self, text="End date", command=self.popup)
        self.ed_button.grid()
        self.master.bind('<space>', self.print_selected_date)

    def popup(self):
        child = tk.Toplevel()
        cal = Calendar.Calendar(child, self.data)

    def print_selected_date(self, event):
        print(self.data)

root = tk.Tk()
my_gui = Application(root)
root.mainloop()

Класс Control не является частью календаря, но включен в качестве примера того, как его использовать.Это распространенный способ построения пакетов.Ищите строку if __name__ == '__main__': и там будет пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...