RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1439036
Accepted
Software Sec
Software Sec
Asked:2022-08-13 23:01:55 +0000 UTC2022-08-13 23:01:55 +0000 UTC 2022-08-13 23:01:55 +0000 UTC

如何制作自己的移动框并移除框架?

  • 772

如何制作自己的移动框并移除框架。

有一个窗口。但他有一个我想删除的框架。 并为移动窗口制作一个字段,但不要将其放在顶部,而是放在底部。

是否有可能做到这一点?如何?

nain.py

from tkinter import *
from tkinter import filedialog
from turtle import title
from pygame import mixer #pip install pygame


class MusicPlayer:
    def __init__(self, window ):
        g = 0
        text = 'Pause'
        window.geometry('330x110'); window.title('Это нужно убрать!'); window.resizable(0,0)
        Load = Button(window, relief='flat', text = 'Load', bg = 'black', fg = 'white', width = 10, font = ('Comic', 10), command = self.load)
        Play = Button(window, relief='flat', text = 'Play', bg = 'black', fg = 'white', width = 10,font = ('Comic', 10), command = self.play)
        Pause = Button(window,relief='flat', text = text, bg = 'black', fg = 'white', width = 10, font = ('Comic', 10), command = self.pause)
        Stop = Button(window ,relief='flat', text = 'Stop', bg = 'black', fg = 'white', width = 10, font = ('Comic', 10), command = self.stop)
        Title = Label(text = 'Alis',bg = 'black', fg = 'white')
        X = Button(window ,text = '×',relief='flat', bg = 'black', fg = 'white', width = 1, font = ('Times', 20), command = self.exit)
        
        Load.place(x=0,y=20);Play.place(x=110,y=20);Pause.place(x=220,y=20);Stop.place(x=110,y=60);X.place(x=305,y=70);Title.place(x=0,y=90)
        self.music_file = False
        self.playing_state = False
    def load(self):
        self.music_file = filedialog.askopenfilename()
    def play(self):
        if self.music_file:
            mixer.init()
            mixer.music.load(self.music_file)
            mixer.music.play()
    def pause(self):
        if not self.playing_state:
            mixer.music.pause()
            self.playing_state=True
            self.text = 'Play'
        else:
            mixer.music.unpause()
            self.playing_state = False
    def stop(self):
        mixer.music.stop()
    def exit(self):
        root.destroy()
root = Tk()
app= MusicPlayer(root)
root.lift()
root.wm_attributes("-topmost", True)
root.wm_attributes('-alpha',0.8)
root['bg'] = 'black'
root.mainloop()

在此处输入图像描述

python python-3.x
  • 1 1 个回答
  • 52 Views

1 个回答

  • Voted
  1. Best Answer
    S. Nick
    2022-08-14T06:44:57Z2022-08-14T06:44:57Z

    试试这样:

    from tkinter import *
    from tkinter import filedialog
    # ???from turtle import title
    from pygame import mixer                               # pip install pygame
    
           
    class Grip:
        def __init__(self, parent, disable=None, releasecmd=None) :
            super().__init__()    
        
            self.parent = parent
            self.root = parent.winfo_toplevel()
    
            self.disable = disable
            if type(disable) == 'str':
                self.disable = disable.lower()
    
            self.releaseCMD = releasecmd
    
            self.parent.bind('<Button-1>', self.relative_position)
            self.parent.bind('<ButtonRelease-1>', self.drag_unbind)
    
        def relative_position (self, event) :
            cx, cy = self.parent.winfo_pointerxy()
            geo = self.root.geometry().split("+")
            self.oriX, self.oriY = int(geo[1]), int(geo[2])
            self.relX = cx - self.oriX
            self.relY = cy - self.oriY
    
            self.parent.bind('<Motion>', self.drag_wid)
    
        def drag_wid (self, event) :
            cx, cy = self.parent.winfo_pointerxy()
            d = self.disable
            x = cx - self.relX
            y = cy - self.relY
            if d == 'x' :
                x = self.oriX
            elif d == 'y' :
                y = self.oriY
            self.root.geometry('+%i+%i' % (x, y))
    
        def drag_unbind (self, event) :
            self.parent.unbind('<Motion>')
            if self.releaseCMD != None :
                self.releaseCMD()        
    
    
    class MainFrame(Frame):
        def __init__(self, parent):
            super(MainFrame, self).__init__(parent)
            
    # ???        g = 0
            text = 'Pause'
    #        window.geometry('330x110'); window.title('Это нужно убрать!'); window.resizable(0,0)
            Load = Button(self, 
                relief='flat', text = 'Load', 
                bg = 'black', fg = 'white', 
                width = 10, font = ('Comic', 10), 
                command = self.load)
            Play = Button(self, 
                relief='flat', text = 'Play', 
                bg = 'black', fg = 'white', 
                width = 10,font = ('Comic', 10), 
                command = self.play)
            Pause = Button(self, 
                relief='flat', text = text, 
                bg = 'black', fg = 'white', 
                width = 10, font = ('Comic', 10), 
                command = self.pause)
            Stop = Button(self, 
                relief='flat', text = 'Stop', 
                bg = 'black', fg = 'white', 
                width = 10, font = ('Comic', 10), 
                command = self.stop)
       
            Load.place(x=0, y=20);
            Play.place(x=110, y=20);
            Pause.place(x=220, y=20);
            Stop.place(x=110, y=60);
            
            self.music_file = False
            self.playing_state = False
            
        def load(self):
            self.music_file = filedialog.askopenfilename()
            
        def play(self):
            if self.music_file:
                mixer.init()
                mixer.music.load(self.music_file)
                mixer.music.play()
                
        def pause(self):
            if not self.playing_state:
                mixer.music.pause()
                self.playing_state=True
                self.text = 'Play'
            else:
                mixer.music.unpause()
                self.playing_state = False
                
        def stop(self):
            mixer.music.stop()
    
    
    def exit():
        root.destroy()        
            
    root = Tk()
    root.geometry("330x120")
    root.resizable(0, 0)
    root.overrideredirect(1)
    root.wm_attributes("-topmost", True)
    root.wm_attributes('-alpha',0.8)
    root['bg'] = 'black'
    
    mainFrame = MainFrame(root)
    mainFrame.pack_propagate(0)
    mainFrame.pack(fill=BOTH, expand=1)
    mainFrame['bg'] = 'black'
    
    bottomFrame = Frame(mainFrame, bg="#050505")
    bottomFrame.place(x=0, y=100, anchor="nw", width=330, height=20)
    
    grip = Grip(bottomFrame)
    
    title = Label(
        bottomFrame, 
        text='Alis', 
        bg='black', 
        fg='white'
    )
    title.place(x=0, y=0)
    
    exit_btn = Button(
        bottomFrame, 
        text="×", 
        relief='flat',
        bg="black", 
        fg="white", 
        width=1,
        font=('Times', 20),
        command=lambda: exit()
    )
    exit_btn.place(x=310, y=0, anchor="nw", width=20, height=20)
    
    root.mainloop()
    

    在此处输入图像描述

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5