我刚刚进入Python,并一直在使用tkinter来设计图形用户界面,到目前为止这很有趣。我一直在实验框架,我试图将屏幕分成3个“窗格”,如果你愿意的话。由于某种原因,即使组合宽度小于总宽度,它仍然延伸超过屏幕的边界。
对我来说,我不明白为什么紫色的框架在右边被切断了。
我有点怀疑我使用padx和pady的次数。我也很好奇它是否与grid_propagate或pack_propagate有关,这就是我为什么这么多次使用它的原因。
任何帮助都很感激。
结果
import tkinter as tk
from tkinter import *
from tkinter import filedialog
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure
def close():
exit()
#--------------------------------------------------------------
# Root Stuff
root = tk.Tk()
root.title('rough frame gui test v1')
root.geometry('1920x1080')
root.attributes('-fullscreen', False)
root.state('zoomed')
root.iconphoto(False, tk.PhotoImage(file='C:/Users/Trevor/OneDrive - Providence College/Research/Summer 2021/Single Py Files/spec_icon.png'))
#--------------------------------------------------------------
# A couple Random Functions
def donothing():
print('nothing')
def close():
root.destroy()
#---------------------------------------------------------------
# 0 - Main Frame
#root = Frame(root)
#root.grid(row=0, column=0, sticky="nswe")
#---------------------------------------------------------------
# 1 - Navigation Frame
frameNav = Frame(root, bg="blue", height=500, width=480)
frameNav.grid(row=0, column=0, sticky=N)
frameNav.grid_propagate(True)
global canvasNav
canvasNav = Canvas(frameNav, bg="white", height=500, width=480, bd=2, relief=SUNKEN)
canvasNav.grid(row=0, column=0, sticky="nswe", padx=5, pady=5)
canvasNav.grid_propagate(False)
navTitle = Label(canvasNav, bg='white', text="Current Database:", bd=2, anchor=CENTER)
navTitle.grid(row=0, column=0, padx=5, pady=5)
navPane = Label(canvasNav, bg='white', text="NAVIGATION PANE", bd=2, anchor=CENTER)
navPane.grid(row=2, column=0, padx=5, pady=5)
#---------------------------------------------------------------
# 2 - Graph Frame
frameGraph = Frame(root, bg="green", height=500, width=960)
frameGraph.grid(row=0, column=1, sticky=N)
frameGraph.grid_propagate(True)
global canvasGraph
canvasGraph = Canvas(frameGraph, bg="white", height=500, width=960, bd=2, relief=SUNKEN)
canvasGraph.grid(row=0, column=0, sticky="nswe", padx=5, pady=5)
canvasGraph.grid_propagate(False)
loadGraph = Button(canvasGraph, text="Load Graph", bd=2, anchor=CENTER)
loadGraph.grid(row=0, column=0, sticky=S, padx=5, pady=5)
#---------------------------------------------------------------
# 3 - Tasks Frame
frameTasks = Frame(root, bg="purple", height=500, width=400)
frameTasks.grid(row=0, column=2, sticky=N)
frameTasks.grid_propagate(True)
global bFrameTasks
bFrameTasks = Canvas(frameTasks, bg="white", height=500, width=400, bd=2, relief=SUNKEN)
bFrameTasks.grid(row=0, column=0, sticky="nswe", padx=5, pady=5)
bFrameTasks.grid_propagate(True)
#---------------------------------------------------------------
# FUNCTION TO HIDE WINDOWS (TASKS)
#
def toggleTasks():
try:
global bFrameTasks
print(bFrameTasks.winfo_exists())
if bFrameTasks.winfo_exists() == 1:
print("Destroying package...")
bFrameTasks.destroy()
else:
bFrameTasks = tk.Frame(frameTasks, bg="white", height=500, width=480, bd=2, relief=SUNKEN)
bFrameTasks.pack(padx=5, pady=5)
except Exception as e:
print(e)
print('An error has occurred...')
#---------------------------------------------------------------
#end
#---------------------------------------------------------------
# FUNCTION TO HIDE WINDOWS (GRAPH)
#
def toggleGraph():
try:
global canvasGraph
print(canvasGraph.winfo_exists())
if canvasGraph.winfo_exists() == 1:
print('Destroying package...')
canvasGraph.destroy()
else:
canvasGraph = tk.Canvas(frameGraph, bg="white", height=500, width=960, bd=2, relief=SUNKEN)
canvasGraph.pack(padx=5,pady=5)
except Exception as e:
print(e)
print('An error has occurred...')
#---------------------------------------------------------------
#end
#---------------------------------------------------------------
# FUNCTION TO HIDE WINDOWS (NAVIGATION)
#
def toggleNav():
try:
global canvasNav
print(canvasNav.winfo_exists())
if canvasNav.winfo_exists():
print('Destroying...')
canvasNav.destroy()
else:
canvasNav = tk.Canvas(frameNav, bg="white", height=500, width=480, bd=2, relief=SUNKEN)
canvasNav.pack(padx=5,pady=5)
except Exception as e:
print(e)
print('An error has occurred')
#---------------------------------------------------------------
#end
def fileExplore():
dbFolder = filedialog.askdirectory(initialdir = '/', title = 'Select Database Folder')
print(dbFolder) #working! just need to get it to display to a widget
folderName = tk.Label(canvasNav, bg='gray', text=dbFolder)
folderName.grid(row=1, column=0, sticky=N, padx=5, pady=5)
#---------------------------------------------------------------
# MENU
menuBar = Menu(root)
fileMenu = Menu(menuBar, tearoff=0)
menuBar.add_cascade(label="File", menu=fileMenu)
fileMenu.add_command(label="Open Database Folder", command=fileExplore)
fileMenu.add_command(label="Save", command=donothing)
fileMenu.add_command(label="Save as...", command=donothing)
fileMenu.add_separator()
fileMenu.add_command(label="Exit...", command=close)
hideMenu = Menu(menuBar, tearoff=0)
menuBar.add_cascade(label="Hide", menu=hideMenu)
hideMenu.add_checkbutton(label="Task Bar", command=toggleTasks)
hideMenu.add_checkbutton(label="Graph", command=toggleGraph)
hideMenu.add_checkbutton(label="Navigation", command=toggleNav)
#---------------------------------------------------------------
root.config(menu=menuBar)
root.mainloop()
我认为Python还没有意识到正确的屏幕分辨率,即使您使用geometry()
。基于:
我会说在root.state(缩放)之后添加root.update_idletasks()
一行,看看这是否有助于更改它。
如果不想每次都对几何体进行硬编码,可以尝试root。几何体(f“{root.winfo_width()}x{root.winfo_height()}”
。考虑到边框占用一些像素以及菜单栏在高度上占用的空间,我认为您可能需要在此之后调整其他帧的
宽度/高度
下面是我的代码: null null 为什么类名为“menu”的div没有浮动到右侧? 我希望div浮动到其父项右侧。 谢谢.
我刚刚安装了Xcode 8,我使用NSLogs来查看我的服务器响应和其他验证。< br >但是,我的NSLogs和我的服务器响应(在JSON中)被切断。有什么想法吗?< br >我正在使用objective-c并在真实设备上运行我的应用程序。
问题内容: 我正在使用具有“很高”的xlabel的位置绘制数据集(这是在TeX中渲染的公式,其中包含一个分数,因此其高度等于几行文本)。 无论如何,当我绘制数字时,公式的底部总是被切除。更改图形大小似乎无济于事,而且我还无法弄清楚如何将x轴“向上”移动以为xlabel腾出空间。诸如此类的东西将是一个合理的临时解决方案,但最好的办法是使matplotlib自动识别标签被切断并相应调整大小。 这是我的
[大家好!每次我运行命令时,它都会创建node_modules文件夹,但该文件夹被排除在外!我也有一些警告,你可以看到,但我认为npm安装是成功的。 npm警告已弃用minimatch@2.0.10:请更新至minimatch 3.0。2或更高版本以避免RegExp DoS问题 npm警告已弃用minimatch@0.2.14:请更新至minimatch 3.0。2或更高版本以避免RegExp D
我已经设置了一个左右两侧的导航抽屉。除了一件事,一切都很好。 我希望我的另一个动作栏项目切换右边的抽屉菜单。正常的左边动作栏切换效果很好。谷歌Android应用程序通知面板是我希望动作模仿的。 下面是我用来设置右侧切换的代码(现在它在单击时强制关闭): 如果有人知道怎么做,如果你能让我知道就太好了! 谢谢
使用Java的泛型特性,我创建了一个List对象,在左侧,我使用原始类型List,在右侧,我使用泛型类型ArrayList 。 并且我在list对象中添加了一个int值。