Как импортировать все под функцию - PullRequest
0 голосов
/ 06 января 2020

У меня есть экран входа, который после входа в систему приведет меня на страницу с двумя кнопками. Кнопка страницы столовой и кнопка страницы администратора.

Моя первая проблема заключается в том, что, как только я открываю свою страницу столовой, нажав кнопку, все, что находится внутри этой страницы, кажется, не работает. Я предполагаю, что мне нужно «импортировать * из столовой», хотя я не могу импортировать все под модулем. моя вторая проблема такая же, как первая, только с моим экраном администратора.

def adminpage():
    import Admin

def canteenpage():
    import Canteen

find_user = ('SELECT * FROM user WHERE username = ? and password = ?')
        c.execute(find_user,[(self.username.get()),(self.password.get())])
        result = c.fetchall()
        if result:
            root=Tk()
            root.geometry("400x400")
            root.title("Select Page")
            Label(text = "welcome to the dashboard").pack()
            Button(root, text = "Canteen Page",command=canteenpage).pack()
            Button(root, text = "Admin Page",command=adminpage).pack()

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Как говорилось в моем комментарии, если вы хотите импортировать содержимое модуля, который вы делаете from Canteen import *

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

Для такого поведения я предлагаю проверить либо виджет сообщения , либо виджет сообщения из tkinter и адаптировать свой код для использования любого из них.

0 голосов
/ 06 января 2020

Вы должны поместить весь код в другой модуль (в вашем случае «Администратор» и «Столовая») в классе. Это будет работать для вас.

Как я сделал в этом примере:

Module_1:

import tkinter as tk


def test_func():
    from Module_2 import TestClass


root = tk.Tk()

b = tk.Button(root, text="Click", command=lambda: test_func())
b.pack()

root.mainloop()

Module_2:

class TestClass:
    import tkinter as tk
    root = tk.Toplevel()
    lbl = tk.Label(root, text="Test Label")
    lbl.pack()

Это будет работа для вас

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