python利用哪个库可以创建父子窗口显示图片,同时创建销毁,子窗口只能在父窗口上移动
类似于window照片查看器的格式 几乎所有窗口的库都能做到图片查看器的样子。 阴阳神万物主 发表于 2020-6-30 21:35几乎所有窗口的库都能做到图片查看器的样子。
可是子窗口只能在父窗口上上移动这个还得自己写吧 tkinter不就可以么~ 豆豆111 发表于 2020-7-1 15:28
可是子窗口只能在父窗口上上移动这个还得自己写吧
谢谢你呀,我还是刚入门的小白,现在用的cv2库 yhhpf 发表于 2020-7-1 15:34
tkinter不就可以么~
谢谢你呀,我现在就用的tkinter,可是Toplevel这个子窗口能移动的区域太大,想把它的活动范围限制在主窗口 豆豆111 发表于 2020-7-1 15:39
谢谢你呀,我现在就用的tkinter,可是Toplevel这个子窗口能移动的区域太大,想把它的活动范围限制在主窗 ...
from tkinter import *
root = Tk()
root.geometry('400x600')
def create():
top = Toplevel(root)
top.title("顶层窗口")
top.geometry('100x100')
top.attributes("-toolwindow", 1)
top.wm_attributes("-topmost", 1)
msg = Message(top, text="我只是个顶层窗口")
msg.pack()
Button(root, text="创建顶层窗口", command=create).pack()
mainloop()
在父窗口范围内移动我是不知道...如果是一直显示在父窗口上的话可以参考下上面的; yhhpf 发表于 2020-7-1 16:12
在父窗口范围内移动我是不知道...如果是一直显示在父窗口上的话可以参考下上面的;
import tkinter as tk # 导入Tkinter模块,仅用于Python3
root = tk.Tk() # 建立Tkinter主窗口root
root.title(' Tk窗口')
root.geometry('{}x{}+{}+{}'.format(400, 400, 200, 200))# 改变窗口位置和大小
root.attributes('-topmost', 0) # 参数1,设置顶层窗口,覆盖其它窗口。
# separator = tk.Frame(height=100, bd=1, relief="sunken")
# separator.pack(fill="x", padx=5, pady=5)
# tk.Label(text="小鸡炖蘑菇").pack()
popWindow = tk.Toplevel(root)
popWindow.title('Toplevel窗口')
popWindow.geometry('{}x{}+{}+{}'.format(200, 200, 300, 300))# 改变窗口大小和位置
popWindow.attributes("-toolwindow", 1) # 参数1,设置工具栏样式窗口。
popWindow.attributes('-topmost', 1) # 参数1,设置顶层窗口,覆盖其它窗口。
popWindow.attributes("-alpha", 0.5)
popWindow.resizable(width=False, height=False)# Toplevel窗口不可以调整尺寸
popWindow.overrideredirect() # 隐藏窗体工具栏
# popWindow.withdraw()
def change(event):
global a, b, c, d
root.update()
a = root.winfo_x()
b = root.winfo_y()
print("(窗口位置被移动)窗口位于屏幕xxx轴:" + str(a))
print("(窗口位置被移动)窗口位于屏幕y轴:" + str(b))
root.bind("<Configure>", change)# 绑定事件
popWindow.update()
c = popWindow.winfo_x()
d = popWindow.winfo_y()
print("(窗口位置被移动)窗口位于屏幕1111111111轴:" + str(c))
print("(窗口位置被移动)窗口位于屏幕222222轴:" + str(d))
if c <= a:
popWindow.geometry('{}x{}+{}+{}'.format(200, 200, a, d))
elif c >= (a + 200):
popWindow.geometry('{}x{}+{}+{}'.format(200, 200, a+200, d))
else:
c = popWindow.winfo_x()
if d <= b:
popWindow.geometry('{}x{}+{}+{}'.format(200, 200, c, b))
elif d >= (b + 200):
popWindow.geometry('{}x{}+{}+{}'.format(200, 200, c, b+200))
else:
d = popWindow.winfo_y()
popWindow.bind("<Configure>",change)
root.mainloop()
我自己写了让子窗口只能在父窗口上移动的函数,可是只要子窗口碰到边界,if语句就陷入死循环,特别郁闷,不知哪出问题了 豆豆111 发表于 2020-7-1 16:48
import tkinter as tk # 导入Tkinter模块,仅用于Python3
root = tk.Tk() # 建立Tkinter主窗口root ...
忘前辈指教 yhhpf 发表于 2020-7-1 16:12
在父窗口范围内移动我是不知道...如果是一直显示在父窗口上的话可以参考下上面的;
麻烦前辈指教
本帖最后由 yhhpf 于 2020-7-1 17:22 编辑
豆豆111 发表于 2020-7-1 17:00
麻烦前辈指教
import tkinter as tk # 导入Tkinter模块,仅用于Python3
root = tk.Tk() # 建立Tkinter主窗口root
root.title(' Tk窗口')
root.geometry('{}x{}+{}+{}'.format(400, 400, 200, 200))# 改变窗口位置和大小
root.attributes('-topmost', 0) # 参数1,设置顶层窗口,覆盖其它窗口。
# separator = tk.Frame(height=100, bd=1, relief="sunken")
# separator.pack(fill="x", padx=5, pady=5)
# tk.Label(text="小鸡炖蘑菇").pack()
popWindow = tk.Toplevel(root)
popWindow.title('Toplevel窗口')
popWindow.geometry('{}x{}+{}+{}'.format(200, 200, 300, 300))# 改变窗口大小和位置
popWindow.attributes("-toolwindow", 1) # 参数1,设置工具栏样式窗口。
popWindow.attributes('-topmost', 1) # 参数1,设置顶层窗口,覆盖其它窗口。
popWindow.attributes("-alpha", 0.5)
popWindow.resizable(width=False, height=False)# Toplevel窗口不可以调整尺寸
popWindow.overrideredirect() # 隐藏窗体工具栏
# popWindow.withdraw()
def change(event):
global a, b, c, d
root.update()
a = root.winfo_x()
b = root.winfo_y()
print("(窗口位置被移动)窗口位于屏幕xxx轴:" + str(a))
print("(窗口位置被移动)窗口位于屏幕y轴:" + str(b))
root.bind("<Configure>", change)# 绑定事件
popWindow.update()
c = popWindow.winfo_x()
d = popWindow.winfo_y()
print("(窗口位置被移动)窗口位于屏幕1111111111轴:" + str(c))
print("(窗口位置被移动)窗口位于屏幕222222轴:" + str(d))
if c <= a:
popWindow.geometry('{}x{}+{}+{}'.format(200, 200, a+10, d))
elif c >= (a + 200):
popWindow.geometry('{}x{}+{}+{}'.format(200, 200, a+190, d))
else:
c = popWindow.winfo_x()
if d <= b:
popWindow.geometry('{}x{}+{}+{}'.format(200, 200, c, b+10))
elif d >= (b + 200):
popWindow.geometry('{}x{}+{}+{}'.format(200, 200, c, b+190))
else:
d = popWindow.winfo_y()
popWindow.bind("<Configure>",change)
root.mainloop()
我也顺带学习了下,按你思路,改了下代码{:10_256:}
最好加个弹框提示~~~ yhhpf 发表于 2020-7-1 17:20
我也顺带学习了下,按你思路,改了下代码
最好加个弹框提示~~~
相互学习https://fishc.com.cn/static/image/smiley/comcom/3.gif 豆豆111 发表于 2020-7-1 18:03
相互学习https://fishc.com.cn/static/image/smiley/comcom/3.gif
{:10_281:}反正都回答了,顺便给个最佳吧,哈哈哈哈
页:
[1]