鱼C论坛

 找回密码
 立即注册
查看: 1667|回复: 1

不同模块调用的问题

[复制链接]
发表于 2019-9-18 21:49:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
写模块时,模块A,B调用出现问题,问题是A->B可以,B->A也可以,但是A再到B就报错了
源代码如下:from tkinter import *
from SQLserver import *
from student_surface import *
from log_in import *
def test():
   
    def log():
        


        a=Tk()
        msg=SQLServer(server="localhost",user="MADAO",password="mayixiang",database="test05")
        sql='select * from syuser'
        result = msg.ExecQuery(sql)
        d=0
        for row in result:
            if(e1.get()==row[0].rstrip()):
                cipher=row[3].rstrip()
                c=row[4]
                d=1
                break
            elif(row[1].rstrip()==e1.get()):
                cipher=row[3].rstrip()
                c=row[4]
                d=1
                break
            elif(row[2].rstrip()==e1.get()):
                cipher=row[3].rstrip()
                c=row[4]
                d=1
                break
        if d==0:
            Label(a,text='账号错误!').pack()
            Button(a,text='确认',width=10,command=a.destroy).pack()
            e2.delete(0,len(e2.get()))
        
        elif d==1:
            if cipher!=e2.get():
                Label(a,text='密码错误!').pack()
                Button(a,text='确认',width=10,command=a.destroy).pack()
                e2.delete(0,len(e2.get()))
            else:
                Label(a,text='登入成功!').pack()
                Button(a,text='确认',width=10,command=a.destroy).pack()
                if c==1:
                    sql2='select sname from student where sno=%s'%e1.get()
                    result2=msg.ExecQuery(sql2)
                    for row2 in result2:
                        sname=row2[0]



                    surface(e1.get(),sname)
                    
                root.destroy()
        a.mainloop()
   
   
    root=Tk()
    root.iconbitmap('.//ganda.ico')
    root.title('学生管理系统')
   

    v1=StringVar()
    v2=StringVar()

    Label(root,text='账号:').grid(row=0,column=0)
    Label(root,text='密码:').grid(row=1,column=0)

    e1=Entry(root,textvariable=v1)
    e2=Entry(root,textvariable=v2,show='*')

    e1.grid(row=0,column=1,padx=10,pady=5)
    e2.grid(row=1,column=1,padx=10,pady=5)

    Button(root,text='登入',width=10,command=log).grid(row=3,column=0,sticky=W,padx=10,pady=5)
    Button(root,text='退出',width=10,command=root.destroy).grid(row=3,column=1,sticky=E,padx=10,pady=5)
   

    root.mainloop()



if __name__=="__main__":
        test()




from tkinter import *
from SQLserver import *
from log_in import *
from student_surface import *
from tkinter import ttk

def surface(sno,sname):
    def log():
        root1.destroy()
        test()


    root1=Tk()
    root1.iconbitmap('.//ganda.ico')
    root1.title('***********学生管理系统(学生模式)************')
   
   
    group=LabelFrame(root1,text='用户',padx=5,pady=5)
    group.grid(row=0,column=0)

    Label(group,text='姓名:'+sname).pack(anchor=W)
    Label(group,text='账号:'+sno).pack(anchor=W)
    Button(group,text='注销',width=10,command=log).pack()
    Button(group,text='修改密码',width=10).pack()



    group2=LabelFrame(root1,text='请选择你的操作',padx=5,pady=5)
    group2.grid(row=1,column=0)

    Button(group2,text='查询',width=10).pack()
    Button(group2,text='修改',width=10).pack()
    Button(group2,text='增加',width=10).pack()
    Button(group2,text='删除',width=10).pack()

    group3=LabelFrame(root1,text='',padx=5,pady=5)
    group3.grid(row=1,column=1)
    tree_date=ttk.Treeview(group3,show="headings",height=5)
    tree_date['columns']=['sno','sname','ssex','sage','sdept']
    tree_date.pack()
   
    tree_date.column('sno',width=100)
    tree_date.column('sname',width=100)
    tree_date.column('ssex',width=100)
    tree_date.column('sage',width=100)
    tree_date.column('sdept',width=100)

    tree_date.heading('sno',text='学号')
    tree_date.heading('sname',text='姓名')
    tree_date.heading('ssex',text='性别')
    tree_date.heading('sage',text='年龄')
    tree_date.heading('sdept',text='系别')

    msg=SQLServer(server="localhost",user="MADAO",password="mayixiang",database="test05")
    sql="select * from student where sno='%s'"%sno
    result = msg.ExecQuery(sql)
    for row in result:
        i=0
        tree_date.insert('',i,values=row)
        i=i+1
   

if __name__=="__main__":
        surface('0','0' )

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-9-18 22:50:58 | 显示全部楼层
我个人感觉,假如A->B,表示B调用A模块,
从A->B,再B->A不靠谱吧,B调用了A模块,A怎么反过来又调用B模块呢,要么新增一个模块C,B同时调用A,C模块里的东西吧。
或者一个公共模块C,A和B都直接调用C

估计A->B,同时B->A,那就不知道可不可以。如果可以,比如A中有个类C1, B中有个类C2。那在A中 from B import C2 ,在B中from A import C1。就算不报错,看起来也会非常奇怪了
---------
你没有说明A,B模块是什么,帖的两个程序我也没看懂是怎么相互引用。所以按照自己的理解,错了也不一定
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-19 10:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表