会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133794个问题

flask项目.zip

image.png

image.png

老师,这个为什么是错误的,


Python 全系列/第九阶段:Flask百战电商后台系统/Flask百战电商后台项目 31771楼

老师:我按书中的程序写了一遍,发现报错,看错误提示是父类(Frame)的属性没有被调用,如下:

# encoding: utf-8
from tkinter import *
from tkinter import messagebox


class Application(Frame):
    def __init__(self,master=None):
        super().__init__(self,master)
        self.master = master
        self.pack()
        self.createWidget()
    def createWidget(self):
        self.btn01 = Button(self)
        self.btn01["text"] = "点我送花"
        self.btn01.pack()
        self.btn01["command"] = self.songhua
        self.btnQuite = Button(self,text="退出", command=root.destroy)
        self.btnQuite.pack()
    def songhua(self):
        messagebox.showinfo("送花", "送你99朵玫瑰花")


if __name__ == "__main__":
    root = Tk()
    root.title("经典的app程序")
    root.geometry("500x300+100+200")
    app = Application(master=root)
    root.mainloop()

运行

image.png

看到问题提示,我在初始化中将super()该为Frame.问题解决,为什么用super()会出错呢?

# encoding: utf-8
from tkinter import *
from tkinter import messagebox


class Application(Frame):
    def __init__(self,master=None):
        Frame.__init__(self,master)
        self.master = master
        self.pack()
        self.createWidget()
    def createWidget(self):
        self.btn01 = Button(self)
        self.btn01["text"] = "点我送花"
        self.btn01.pack()
        self.btn01["command"] = self.songhua
        self.btnQuite = Button(self,text="退出", command=root.destroy)
        self.btnQuite.pack()
    def songhua(self):
        messagebox.showinfo("送花", "送你99朵玫瑰花")


if __name__ == "__main__":
    root = Tk()
    root.title("经典的app程序")
    root.geometry("500x300+100+200")
    app = Application(master=root)
    root.mainloop()

运行

image.png

Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 31772楼

"""开发画图软件"""
import tkinter as tk

# 窗口的宽度和高度
win_width=900
win_height=450
class Application(tk.Frame):
    def __init__(self, master = None):
        super().__init__(master)
        self.master = master
        self.bgcolor = '#000000'
        self.x = 0
        self.y = 0
        self.fgcolor = '#ff0000'
        self.lastDraw = 0
        self.pack()
        self.createWidget()

    def createWidget(self):
        # 创建绘图区
        self.drawpad = tk.Canvas(self, width=win_width, height=win_height * 0.9, bg=self.bgcolor)
        self.drawpad.pack()

        # 创建按钮
        btn_start = tk.Button(self, text='开始', width='10', name='start');btn_start.pack(side='left', padx='10', pady='5')
        btn_pen = tk.Button(self, text='画笔', width='10', name='pen');btn_pen.pack(side='left', padx='10', pady='5')
        btn_rect = tk.Button(self, text='矩形', width='10', name='rect');btn_rect.pack(side='left', padx='10', pady='5')
        btn_clear = tk.Button(self, text='清屏', width='10', name='clear');btn_clear.pack(side='left', padx='10', pady='5')
        btn_erasor = tk.Button(self, text='橡皮擦', width='10', name='erasor');btn_erasor.pack(side='left', padx='10', pady='5')
        btn_line = tk.Button(self, text='直线', width='10', name='line');btn_line.pack(side='left', padx='10', pady='5')
        btn_lineArrow = tk.Button(self, text='箭头直线', width='10', name='lineArrow');btn_lineArrow.pack(side='left', padx='10', pady='5')
        btn_color = tk.Button(self, text='颜色', width='10', name='color');btn_color.pack(side='left', padx='10', pady='5')

    def eventManager(self,event):
        name = event.widget.winfo_name()
        print(name)
        if name == "line":
            self.drawpad.bind('<B1-Motion>',self.myline)

    def myline(self, event):
        self.drawpad.delete(self.lastDraw)
        self.lastDraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)


if __name__ == "__main__":
    root = tk.Tk()
    root.title('画画本')
    root.geometry(str(win_width)+'x'+str(win_height))
    app = Application(master = root)
    root.mainloop()

老师,代码写到这里,有点问题:

  1. 全程照着打,为啥,我点击直线没有反应

  2. 如下图,为啥要在事件管理中写呢,直接在对应button后面 ,绑定事件不就可以了嘛

    image.png

  3. 问题2截图中第二三行什么意思,老师木有说道,直接就有了

  4. 如下图,这个fill是什么意思

    image.png

Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 31773楼

from tkinter import *  # 导入tkinter里得全部方法
from tkinter import messagebox  # 调用 messaagebox 模块
import random


class Application(Frame):
    def __init__(self,master=None):
        super().__init__(master) #super代表父类定义 而不是父类对象
        self.master=master
        self.pack()
        self.createWidget()

    def createWidget(self):  # 创建组件
        """通过place布局管理实现扑克牌位置控制"""
        self.photos = [PhotoImage(file="venv/11"+str(i+1)+".gif") for i in range(10)]
        self.pukes = [Label(self.master,image=self.photos[i])for i in range(10)]
        for i in range(10):
            self.pukes[i].place(x=10+i*40,y=50)
        self.pukes[0].bind_class("Label","<Button-1>",self.chupai)
    def chupai(self,event):
        print(event.widget.winfo_geometry())
        print(event.widget.winfo_y())
        if event.widget.winfo_y == 50:
            event.widget.place(y=30)
        else:
            event.widget.place(y=50)





if __name__ == '__main__':
    root=Tk()
    root.geometry('800x400+200+300')
    root.title('扑克游戏界面')
    app=Application(master=root)
    root.mainloop()

a23423ffc97e66344a06ebfc7472f6c.png


老师 我这里那些错了吗? 单机牌后 它不动 单机多次坐标都不动 else 中 换成30 单机后 出牌了 却回不来了  帮我看一下咋回事

Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 31775楼

image.png

点OK按钮以后数据并没有提交到页面,

JSP文件:

<html>
<head>
    <title>Title</title>
    <script src="js/jquery.js"></script>
    <script>
        function but(){
            var userid = $("#userid").val();
            var username = $("#username").val();
            $.ajax({
                type:"get",
                url:"data.do",
                data:{
                    id:userid,
                    name:username
                },
                success:function(result){
                    $("#span").html(result);
                }
            });
        }
    </script>
</head>
<body>
用户ID:<input type="text" id="userid"/><br/>
用户姓名:<input type="text" id="username"/><br/>
<span id="span"></span>
<input type="button" value="OK" onclick="but()"/>
</body>
</html>

Servlet文件:

package com.bjsxt.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/data.do")
public class DataServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String userid = req.getParameter("id");
        String username = req.getParameter("name");
        PrintWriter pw = resp.getWriter();
        pw.print(userid+" "+username);
        pw.flush();
        pw.close();
    }
}


JAVA 全系列/第六阶段:JavaWeb开发/Ajax技术详解(旧) 31776楼
Python 全系列/第六阶段:数据库与AI协同技术实战/mysql介绍与环境安装 31778楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/Oracle 数据库的使用 31780楼
JAVA 全系列/第一阶段:AI驱动的JAVA编程/变量、数据类型、运算符 31783楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637